javascript/javascript 심화지식

어휘적 환경(Lexical Environment) 클로저

honey.kikiki 2021. 7. 12. 23:35
728x90

어휘적 환경(Lexical Environment)

closeure 클로저

함수와 렉시컬 환경의 조합

함수가 생성될떄 당시의 외부 변수를 기억

생성 이후에도 계속 접근 가능

 

let one;

one = 1;

function addOne(num) {
  console.log(one + num); //
}

addOne(5); //6

 

내부Lexical 환경

one = 1

// addOne : function

전역Lexical 환경

num = 5

 

-----------------------------------------------

function makeAdder(x) {
  return function (y) {
    return x + y;
  };
} // 5

const add3 = makeAdder(3); // x

console.log(add3(2)); // y

 

내부Lexical 환경

// makeAdder:function

// add3:Function

makeAdder Lexical 환경

x : 3

익명함수 Lexical 환경

y : 2

----------------------------------------------------

function makeCounter() {
  let num = 0; //은닉화

  return function () {
    return num++;
  };
}

 

let counter = makeCounter();

console.log(counter()) // 0

console.log(counter()) // 1

console.log(counter()) // 2

마음대로 숫자를 조정할수없다 카운터호출을 더하지 않는이상