클로저

마조리카·2023년 6월 14일
0

마조리카의 js 정리

목록 보기
10/11

자바스크립트는 어휘적 환경을 갖습니다.

12let one
3줄 one = 1;
45function addOne(num) {
6줄  console.log(one + num);
7}
89addOne(5);

Lexical 환경 순서

1줄
호이스팅 됨.
one: 초기화 X, 사용불가능
addOne: function

2줄
one: undefined, 사용가능
addOne: function

3줄
one: 1
addOne: function

이미 함수선언은 1줄에서 완료 되었음

.
.
.

9줄
함수 실행 -> 새로운 렉시컬 환경 생성
num:5

전역 렉시컬 환경
one:1
addOne:function

내부 렉시컬 환경 -> (참조:외부렉시컬)
num: 5

변수를 찾을때 내부 -> 외부 -> 전역으로 탐색

클로저

함수와 렉시컬환경의 조합
함수가 생성될 당시의 외부 변수를 기억,
생성 이후에도 계속 접근이 가능하다.

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

const add3 = makeAdder(3);
console.log(add3(2)); // 5

전역 렉시컬 환경
makeAdder: functionb
add3: function

makeAdder 렉시컬 환경
x:3

익명함수 렉시컬 환경
y:2

익명함수는 본인이 y를 가지고 있고,
상위 함수인 makeAdder의 x를 참고(기억)하고 어서 접근이 가능하다.

0개의 댓글