[JS Flow] 05. Closure

fano·2021년 1월 22일
0

What is Closure

함수와 함수가 선언될 당시 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');}
  }
}
profile
서비스를 생각하는 개발

0개의 댓글