본문 바로가기
javascript/javascript 심화지식

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

by honey.kikiki 2021. 7. 12.
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

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

댓글