JS. 23 Closure

하승진·2024년 2월 16일

JS 따라잡기

목록 보기
23/49
post-thumbnail

Closure?

: 다른 함수 내부에 정의된 함수가 있는 경우 외부 함수가 실행을 완료하고, 해당 변수가 해당 함수 외부에서 더 이상 액세스할 수 없는 경우에도 해당 내부 함수는 외부 함수의 변수 및 범위에 액세스 가능하게 함

코드 구조

1. outerFunction('outside')은 변수 newFunction에 할당되는 즉시 호출

2. 호출 후 outerFuntion은 변수 newFunction을 innerFunction으로 반환

3. newFunction('inside')으로 호출해 innerFunction을 호출

=> 클로저는 innerFucntion이 원래 outerFunction에 설정한 outerVariable 매개변수를 기억하고, 액세스하게 해줌


예시

외부에서 선언된 a와 functionA 내에서 선언한 b로 console.log(a,b)를 한다.

그리고 외부에서 선언한 functionB를 functionA 내에서 호출한다.

우리의 머릿속 로직으로는 A내에서 호출한 B에서 c를 선언 및 할당했기에 가능할 거라 생각하지만 안된다.

외부에서 선언된 함수를 참조한 경우 해당 변수는 window 객체로 인식한다.

=> 이는 Closure로 해결한다.


다른 함수 내부에 정의된 함수 functionB()경우 외부 함수 functionA가 실행 완료 후 해당 변수(a, b)가 해당 함수 외부에 더 이상 액세스 못해도 해당 내부 함수 functionB는 외부 함수 functionA의 변수(a, b) 및 범위에 액세스 가능하다.

profile
기어갈지언정 한 발자국씩이라도 가보자

0개의 댓글