자바스크립트에선 실행 중인 함수, 코드 블록 {...}, 스크립트 전체는 렉시컬 환경(Lexical Environment) 이라 불리는 내부 숨김 연관 객체(internal hidden associated object)를 생성.
ex code
function makeCounter(){
let count = 0
return function(){
return count++
}
}
const counter = makeCounter() <-- makeCounter 함수 내부 렉시컬 환경이 생성됨, 내부 프로퍼티 저장
alert(counter()) <-- 중첩함수가 생성 되면서 중첩함수 내 렉시컬 환경이 구성됨
function makeCounter(){
let count = 0
return function(){
return count++
}
}
const counter = makeCounter() <-- counter 변수에 담아 도달 가능한 상태
counter = null <-- 도달 불가능 상태 내부, 외부 렉시컬환경 메모리에서 제거