Closure(클로저)는두 개의 함수로 만들어진 환경으로 이루어진 특별한 객체의 한 종류이다. 여기서환경이라 함은 클로저가 생성될 때 그범위에 있던 여러 지역 변수들이 포함된context를 말한다. 이 클로저를 통해서 자바스크립트에는 없는 비공개(private) 속성/메소드, 공개 속성/메소드를 구현할 수 있는 방안을 마련할 수 있다. 클로저 생성하기 다음은 클로저가 생성되는 조건이다. 내부 함수가 익명 함수로 되어 외부 함수의 반환값으로 사용된다. 내부 함수는 외부 함수의 실행 환경(execution environment)에서 실행된다. 내부 함수에서 사용되는 변수 x 는 외부 함수의 변수 스코프에 있다. function outer() { var name = `closure`; function inne..
JavaScript 라는 언어의 특성을 가장 잘 보여주는 특성 중 하나이기에 정리. Hoisting 이란? hoist 라는 단어의 사전적 정의는 끌어올리기 라는 뜻이다. 자바스크립트에서 끌어올려지는 것은 변수이다. var keyword 로 선언된 모든 변수 선언은 호이스트 된다. 호이스트란 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것을 의미한다. 즉, 변수가 함수 내에서 정의되었을 경우, 선언이 함수의 최상위로, 함수 바깥에서 정의되었을 경우, 전역 컨텍스트의 최상위로 변경이 된다. 우선, 선언(Declaration)과 할당(Assignment)을 이해해야 한다. 끌어올려지는 것은 선언이다. function getX() { console.log(x); // undefined var x = ..