Проблема алгоритмов Javascript
Почему этот код выводит 8? Я не могу полностью понять это. Может ли кто-нибудь описать мне, что происходит в коде?
Код:
функция внешняя(a) {
функция внутренняя(b) {
возврат a + b;
}
возвращение внутренней;
}
var f = внешний(3);
f(5);
//выход: 8
Что я уже пробовал:
Я пытался угадать это, но на самом деле я не могу понять, почему это ouput 8. В первом задается параметр 3 для внешнего (a = 3). Итак
функция внутренняя(b) {
возврат 3 + b;
},
но после этого мы устанавливаем параметр один для функций внешний до 5, так что функция внутренняя(b) {
возврат 5 + b;
} ?
Нет, я действительно не могу понять, что происходит в коде.
Кстати, я действительно молодой студент.
ZurdoDev
Шаг 0: научитесь отлаживать. На все ваши вопросы будут даны ответы. См. Решение 1.
Richard Deeming
Это обычно называют "частичным применением":
Бен Альман » частичное применение в JavaScript[^]
В общем случае метод захвата состояния из внешней функции известен как "замыкание":
Закрытие - JavaScript | MDN[^]