반응형
클로저는 세 가지 스코프 체인을 가진다.
- 클로저 자신에 대한 접근
- 자신의 블록 내에 정의된 변수 - 외부 함수의 변수에 대한 접근
- 클로저 자신이 선언된 블록을 의미한다. - 전역 변수에 대한 접근
내부 함수는 외부 함수의 변수뿐만 아니라 매개 변수에도 접근할 수 있다.
다만 외부 함수의 arguments 객체에는 접근할 수 없는데,
모든 함수에는 arguments가 자동으로 선언이 되기 때문이다.
클로저 함수 또한 자신만의 arguments가 존재하기 때문에 외부 함수의 arguments를 다른 변수에 저장하지 않는 한,
클로저는 외부 함수의 arguments에 접근할 수 없다.
클로저는 외부 함수의 변수에 대한 참조를 저장한다.
이는 클로저가 실제 값에 접근하는 것이 아닌 값의 참조에 접근한다는 것을 의미한다.
만약 var로 선언된 값에 대한 참조를 저장한다면,
클로저는 변화된 var 값의 최종 값을 받아올 것이다.
이러한 특징으로 발생할 수 있는 부작용을 방지하기 위해서,
즉시 호출된 함수 표현식 (Immediately Invoked Function Expression; IIFE)을 사용할 수 있다.
내부 함수의 매개 변수에 내부 함수 호출시 받아온 var값을 할당하고,
함수를 반환하는 것이 아닌 함수를 즉시 실행한다.
출처
http://javascriptissexy.com/understand-javascript-closures-with-ease/
http://chanlee.github.io/2013/12/10/understand-javascript-closure/
반응형
'IT > JS' 카테고리의 다른 글
기본 매개변수 (Default Parameters) (0) | 2021.09.12 |
---|---|
fetch API와 then 메서드 (0) | 2021.09.09 |
Recursion (0) | 2021.08.30 |
콜백 함수 (0) | 2021.08.30 |
프로토타입 이해한 내용 정리 (0) | 2021.08.25 |