함수를 일급 객체로 취급하는 함수형 프로그래밍 언어(Haskell, Lisp, Erlang, Scala 등) 사용되는 특성입니다.
const x = 1;
function outerFunc() {
const x = 10;
function innerFunc() {
console.log(x); 10
}
innerFunc();
}
outerFunc();
outerFunc 함수 내부에서 중첩 함수 innerFunc가 정의되고 호출되었습니다. 중첩 함수 innerFunc()의 상위 스코프는 외부 함수 outerFunc의 스코프입니다. 따라서 중첩 함수 innerFunc 내부에서 자신을 포함하고 있는 외부 함수 outerFunce의 x 변숭 접근 할 수 있습니다.
하지만, innerFunc()가 중첩함수가 아닌, outerFunc() 외부에 선언 되면, outerFunc 함수 내부에서 호출하여도 outerFunce() 함수의 변수에 접근을 할 수 없습니다.
const x = 1;
function outerFunc(){
const x = 10;
innerFunc();
}
function innerFunc(){
console.log(x);
}
outerFunc();