let one;
one = 1;
function addOne(num) {
console.log(one + num); // one은 전역 Lexical에 num은 내부 Lexical 환경에 존재
}
addOne(5);
📍전역 Lexical 환경
letone
, functionaddOne
📍내부 Lexical 환경
매개변수num
function makeAdder(x) {
return function(y) {
return x + y;
}
}
const add3 = makeAdder(3);
console.log(add3(2)); // 5, add3 함수가 생성된 이후에도 상위 함수인 makeAdder의 x에 접근 가능
const add10 = makeAdder(10);
console.log(add10(5)); // 15
console.log(add3(1)); // 4
function makeCounter() {
let num = 0; // 은닉화
return function () {
return num++;
};
}
let counter = makeCounter();
console.log(counter()); // 0
console.log(counter()); // 1
console.log(counter()); // 2