[ 자바스크립트 ] 클로저

Frontend Dev Diary·2020년 9월 19일
0

다음 내용은 '모던 자바스크립트 입문'의 8.6단원을 정리한 것입니다.

클로저란?

자기 자신이 정의된 환경에서 함수 안에 있는 자유 변수의 식별자 결정을 실행한다.

MDN에서의 클로저 정의

클로저는 독립적인 (자유) 변수를 가리키는 함수이다. 또는, 클로저 안에 정의된 함수는 만들어진 환경을 ‘기억한다’.

자바스크립트 함수에서 함수 객체객체가 참조하는 렉시컬 환경 컴포넌트가 자유 변수의 식별자 결정을 하게 된다. 클로저는 이러한 함수 객체와 렉시컬 환경 컴포넌트의 집합이다.

클로저는 객체와 비슷하기도 하다. 지역 변수는 객체의 프로퍼티에 해당하고 함수는 객체의 메서드에 해당한다. 반면 객체의 프로퍼티는 외부에서 읽고 쓸 수 있지만 클로저 내부 상태는 외부로부터 숨겨져 있다. (중첩 함수 안에서만 읽고 쓸 수 있다.) 객체 지향 프로그래밍에서 객체의 프로퍼티를 외부로부터 은폐하는 행위를 가리켜 캡슐화라고 한다.

클로저 - 캡슐화된 객체!

외부 함수를 호출할 때마다 그 함수의 렉시컬 환경 컴포넌트가 새로 생성되며, 각 클로저는 서로 다른 내부 상태를 저장한다. 외부 함수는 클로저를 생성하는 팩토리 함수라고 할 수 있다.

profile
성장하는 프론트엔드 개발자

0개의 댓글