함수와 함수가 선언될 당시 lexical environment의 조합
-> 실행컨텍스트(A)에서 함수(B)를 선언한 상황
-> B의 outerEnvironmentReference는 A를 참조하게 된다.
-> 실행컨텍스트 A에서 선언한 변수를 내부함수 B에서 접근할 경우의 상황 = 클로저의 feature
-> (컨텍스트 A에서 선언한)변수 a를 참조하는 내부선언함수 B가 A의 외부로 전달될 경우 A가 종료된 후에도 변수a가 메모리에서 해제되지 않는다.
-> 지역변수가 함수 종료 후에도 사라지지 않을 수 있다.
function A() {
let localA = 1;
let localB = 2;
return {
get a() {return localA;}
set a(v) {localA = v;}
get b() {return localB + localC;}
set b(v) {throw Error('readonly');}
}
}