Замыкание и лексическое окружение

Код
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

Имя *:
Email *:
Код *:
Хостинг от uCoz