1. 렉시컬 스코프
상위 스코프를 기억한다. 이를 저장한다.
2. 함수 객체의 내부 슬롯 [[Environment]]
함수가 정의된 환경
호출되는 환경
다르다
렉시컬 스코프가 가능하려면 | 자신이 정의된 환경. 함수 정의가 위치하는 스코프보다 상위 스코프를 기억해야한다. |
함수는 [[Environment]] 에 | 자신이 정의된 환경, 상위 스코프의 참조를 저장한다. |
함수 정의 평가 -> 함수 객체 생성 할 때 | 자신의 정의된 환경에 의해 결정된 상위 스코프 주소를 함수 객체 자신의 내부 슬롯에 저장한다. |
함수 정의 평가 | 상위 함수가 평가 또는 실행되고 있는 시점 현재 실행 중인 실행 컨텍스트는 상위 함수의 실행 컨텍스트 아직 내가 실행 안됐다. |
전역 정의된 함수 선언문 함수 정의가 평가되는 시점 전역 코드가 평가되는 시점에 평가 -> 함수 객체 생성 |
함수 객체의 내부 슬롯: 외부 함수 환경의 참조가(주소) 저장됨 현재 실행 중인 실행 컨텍스트의 렉시컬 환경의 주소 |
![]() 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. 클로저와 렉시컬 환경
클로저 : 이미 생명 주기가 종료한 외부 함수의 변수를 참조할 수 있다.
외부 함수보다 중첩 함수가 더 오래 유지 되는 것. : 클로저
'학습 기록 (Learning Logs) > 자바스크립트-스터디[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 |