본문 바로가기

프로그래밍 언어/Javascript

javascript의 closure

스코프 체인은 함수를 실행한 위치가 아닌 정의한 위치에 의해 결정된다. 즉, 스코프 체인은 함수를 호출하기 전에 이미 만들어지며, 이 덕분에 우리는 closure를 만들 수 있다. 예를 들어, 다른 함수 내부에 정의되어 있다가 전역 스코프로 반환된 함수가 있다고 가정해 볼 때, 반환된 함수는 전역 스코프에 있더라도 스코프 체인을 통해 부모 함수에 여전히 접근할 수 있다.

아래 코드는 익명 함수를 반환하는 parentFunction이라는 함수를 정의한 후 전역 스코프에서 이 함수를 호출할 것이다. 반환된 익명 함수는 parentFunction 내부에서 정의되었기 때문에 실행될 때 parentFunction의 스코프에 접근할 수 있다. 이를 가리켜 closure라 부른다.