클로저(Closure)란
탄탄한 자바스크립트 기본기를 다지기 위해 클로저에 대해 알아보자.
Closure
closure = function + environment
클로저는 외부 변수를 기억하고 이 외부 변수에 접근할 수 있는 함수를 의미한다.
함수(function)가 하나 생길때마다 클로저는 하나씩 생성된다.
일반적으로 외부 함수의 실행이 끝나면 외부 함수가 소멸된다. 하지만 클로저는 외부 함수가 소멸된 이후에도 내부 함수가 외부함수의 변수에 접근할 수 있는 구조이다.
아래 문제를 풀어보자
1 | function 이름부르기() { |
여기서 정답은 바로 나혜석
이다.
만약 이름부르기함수에서 let name = "나혜석";
이 없었다면 alert창은 권기옥
으로 나올 것이다.
어떻게 이게 가능한걸까?
바로 자바스크립트의 함수는 숨겨진 프로퍼티인 [[Environment]]를 이용해 자신이 어디서 만들어졌는지를 기억하기 때문이다.