본문 바로가기

자바스크립트-스터디[2021-10-05~완료]

[24 클로저]

1. 렉시컬 스코프

상위 스코프를 기억한다. 이를 저장한다.

 

 

 

 

 

2. 함수 객체의 내부 슬롯 [[Environment]]

함수가 정의된 환경

호출되는 환경

다르다

 

 

렉시컬 스코프가 가능하려면  자신이 정의된 환경. 함수 정의가 위치하는 스코프보다 상위 스코프를 기억해야한다.
함수는 [[Environment]] 에  자신이 정의된 환경, 상위 스코프의 참조를 저장한다.
함수 정의 평가 -> 함수 객체 생성 할 때 자신의 정의된 환경에 의해 결정된 상위 스코프 주소를
함수 객체 자신의 내부 슬롯에
저장한다.
함수 정의 평가 상위 함수가 평가 또는 실행되고 있는 시점
현재 실행 중인 실행 컨텍스트는 상위 함수의 실행 컨텍스트

아직 내가 실행 안됐다.
전역 정의된 함수 선언문
함수 정의가 평가되는 시점
전역 코드가 평가되는 시점에 평가 -> 함수 객체 생성
함수 객체의 내부 슬롯: 
외부 함수 환경의 참조가(주소) 저장됨
현재 실행 중인 실행 컨텍스트의 렉시컬 환경의 주소

 

 


inner 에서는 outF에 있는 변수 x 접근 가능: outF 안에 innerF를 정의되서 그래




outF 안에 innerF이 정의되어 있다.
따라서 innerF는 outF 안에 있는 x 값에 접근 가능.
const x =1;

function outF(){
    const x = 10;
    function innerF(){
        console.log(x);
    }
innerF();
}//out end

outF();
const x =1;

function outF(){
    const x = 10;
    innerF(); //외부 함수 호출
}//out end

function innerF(){
  console.log(x);
}

outF();

 

 

3. 클로저와 렉시컬 환경

 

클로저 : 이미 생명 주기가 종료한 외부 함수의 변수를 참조할 수 있다. 

외부 함수보다 중첩 함수가 더 오래 유지 되는 것. : 클로저

'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글

[27장] 배열  (0) 2021.12.30
25장 클래스  (0) 2021.12.18
[26.4~26.5장] ES6함수 추가 기능  (0) 2021.12.10
22장 this  (0) 2021.12.06
21장 빌트인 객체  (0) 2021.11.29