1부에서 이야기한 렉시컬 환경에 대해 오늘 공부한 내용을 공유하는 차원에서 이 글을 쓴다..
프로그래밍 언어에서 스코프를 결정하는 방식은 2가지다.
let a = 10;
function foo() {
let a = 10;
bar()
}
function bar() {
console.log(a);
}
foo();
bar();
렉시컬 환경은 자바스크립트가 렉시컬 스코프 방식으로 작동하는 언어이기 때문에 가능하다.
function HigherOrderFunction() {
let a = 10;
return function (x) { // 함수가 선언된 환경에 따라 상위 스코프 결정!
return a + x;
}
}
const closure = HigherOrderFunction();
console.log(closure(10)); // 20