Замыкание

Ссылку на вложенную функцию можно вернуть в качестве значения внешней функции. В этом случае название вложенной функции указывается в операторе return без круглых скобок. Как вы уже знаете, вложенные функции захватывают переменные в родительской области видимости. После возврата ссылки на вложенную функцию и выхода из внешней функции область видимости сохраняется и мы можем получить доступ к значениям переменных, существовавших в момент создания вложенной функции (листинг 10.3). Это называется замыканием.

Листинг 10.3. Замыкание

function test(x) {    // Внешняя функция
   function func(y) { // Вложенная функция
      console.log(`x = ${x}; y = ${y}`);
   }
   return func;       // Возврат ссылки на вложенную функцию
}
let f1 = test(5);     // Вызов внешней функции
f1(10);               // Вызов вложенной функции
// x = 5; y = 10
f1(55);               // Вызов вложенной функции
// x = 5; y = 55
let f2 = test(2);     // Вызов внешней функции
f2(14);               // Вызов вложенной функции
// x = 2; y = 14
f2(88);               // Вызов вложенной функции
// x = 2; y = 88
test(3)(6);           // Вызов внешней и вложенной функций
// x = 3; y = 6

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов