목록전체 글 (169)
seunghyun Note
Math 많이 사용한다. 앞으로도 많이 써보자구! 1. Math 프로퍼티 Math.PI 말해뭐해 Math.PI; // -> 3.141592653589793 2. Math Method Math.abs 절대 절대값 Math.abs(-1); // -> 1 Math.abs('-1'); // -> 1 Math.abs(''); // -> 0 Math.abs([]); // -> 0 Math.abs(null); // -> 0 Math.abs(undefined); // -> NaN Math.abs({}); // -> NaN Math.abs('string'); // -> NaN Math.abs(); // -> NaN Math.round 둥글게 소수점 이하를 반올림! Math.ro..
1. Number 생성자 함수 표준 빌트인 객체인 Number 객체는 생성자 함수 객체 new 연산자를 사용해서 호출하면 Number 래퍼 객체 생성 new 연산자 사용하지 않고 호출하면 숫자 반환 -> 명시적 타입 변환 용도 const numObj = new Number(); console.log(numObj); // Number {[[PrimitiveValue]]: 0} 인수를 전달하지 않고 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성. 인수로 숫자를 전달하면 [[NumberData]] 내부 슬롯에 인수를 할당한 Number 래퍼 객체를 생성. const numObj = new Number(10); console.log(numObj); // Number ..
1. 배열이란 배열은 여러 개의 값을 순차적으로 나열한 자료구조. 배열이 가지고 있는 값을 요소(elements)라고 부른다. 원시값은 물론 객체, 함수, 배열 등 모든 값은 배열의 요소가 될 수 있다. 자신의 위치를 나타내는 0이상의 정수인 인덱스(index)를 갖는다. 배열은 요소의 개수, 즉 배열의 길이를 나타내는 length 프로퍼티를 갖는다. 배열은 위처럼 length, 인덱스 프로퍼티를 갖기 때문에 for문을 통해서 순차적으로 요소에 접근 가능 배열이라는 타입은 존재하지 않는다. 배열도 객체다. 구분객체배열구조프로퍼티 키와 프로퍼티 값인덱스와 요소값의 참조프로퍼티 키인덱스값의 순서XOlength프로퍼티XO 2. 자바스크립트의 배열은 배열이 아니다. 배열은 동일한 크기의 메모리 공간이 빈틈없이 ..
1. 함수의 구분 ES6 이전까지 자바스크립트의 함수는 별다른 구분 없이 다양한 목적으로 사용되었다. 자바스크립트의 함수 는 일반적인 함수로서 호출할 수도 있고,new 연산자와 함께 호출하여 인스턴스를 생성할 수 있는 생성자 함 var foo = function () { return 1; }; // 일반적인 함수로서 호출 foo(); // -> 1 // 생성자 함수로서 호출 new foo(); // -> foo {} // 메서드로서 호출 var obj = { foo: foo }; obj.foo(); // -> 1 객체에 바인딩된 함수를 생성자 함수로 호출하는 경우가 흔치는 않겠지만 문법상 가능하다는 것은 문제가 있다. 그리고 이는 성능 면에서도 문제가 있다. 객체에 바인딩된 함수가 constructor ..
1.클래스는 프로토타입의 문법적 설탕인가? 자바스크립트는 프로토타입 기반 객체지향 언어다. 프로토타입 기반 객체지향 언어는 클래스가 필요 없는(class free)객체지향 프로그래밍 언어다. ES5에서는 클래스 없이도 아래와 같이 생성자 함수와 프로토타입을 통해 객체지향 언어의 상속을 구현할 수 있다. // ES5 생성자 함수 var Person = (function () { // 생성자 함수 function Person(name) { this.name = name; } // 프로토타입 메서드 Person.prototype.sayHi = function () { console.log('Hi! My name is ' + this.name); }; // 생성자 함수 반환 return Perso..
클로저(closure)란? 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 클로저는 자바스크립트 고유의 개념이 아니다. 함수를 일급 객체로 취급하는 함수형 프로그래밍 언에(하스켈Haskell, 리스프Lisp, 얼랭Erlag, 스칼라Scala등)에서 사용되는 중요한 특성이다. 클로저는 자바스크립 고유의 개념이 아니므로 ECMAScript 사양에 등장하지 않는다. 클로저를 이해하려면 먼저 렉시컬 환경, 즉 렉시컬 스코프를 이해해야 한다. const x = 1; function outerFunc() { const x = 10; function innerFunc() { console.log(x); // 10 } innerFunc(); } outerFunc(); const x = 1; function oute..