Код
let number = 5;
function logNumber() {
console.log(number);
}
number = 6;
logNumber(); // 6
Лексическое окружение - внутренний технический скрытый объект.
Оно разделяется на внутреннее (внутренние свойства и переменные) и внешнее лексическое окружение.
Функция всегда получает текущее (последнее) значение внешних переменных.
Каждый вызов функции создаёт новое лексическое окружение со своими специфическими параметрами.
Пример, в котором одна функция возвращает другую:
Код
function createCounter() {
let counter = 0;
const myFunction = function() {
counter = counter + 1;
return counter;
}
return myFunction;
}
const increment = createCounter();
В
increment в итоге будет помещена функция
myFunction(), а это значит что мы её можем использовать:
Код
const c1 = increment();
const c2 = increment();
const c3 = increment();
console.log(c1, c2, c3); // 1 2 3
Функция при своём создании всегда будет сохранять ссылку на переменную
counter.
Замыкание - это функция, которая запоминает свои внешние переменные и может получить к ним доступ.
Всего комментариев: 0