Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Замыкание
Ссылку на вложенную функцию можно вернуть в качестве значения внешней функции. В этом случае название вложенной функции указывается в операторе 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
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов