У меня возникли проблемы обертывание моей головы вокруг этого (предполагая, что я что-то там быть diffirence в вызове анонимной функции непосредственно или вызывать его переменным отсутствую.Дифференциация между вызовом анонимной функции напрямую и ее вызовом переменной?
Почему в примере ниже 0 установить переменную ' общий?
var adder = function (total) {
// the following function is returned
// and assigned to adder
var inner_function = function (summand) {
total += summand;
alert(total);
}
return inner_function;
}(0);
adder(2); // returns 2
adder(3); // returns 5
Но не тогда, когда я называю эту анонимную функцию потом, как так?
var adder = function (total) {
// the following function is returned
// and assigned to adder
var inner_function = function (summand) {
total += summand;
alert(total);
}
return inner_function;
}
adder(0);
adder(2); // -> 2
adder(3); // -> 5
Ну, вы можете повторно использовать переменную снова и снова ... –
Вы уверены, что ваш второй пример ничего не предупреждает? [JSFiddle] (https://jsfiddle.net/dm74ny9o/). Также, если вы хотите добавить значения, сохраните копию текущего значения и обновите это значение. [Пример скрипта] (https://jsfiddle.net/hqbd02ej/) – Rajesh
Теперь я понимаю свою ошибку, в первом фрагменте кода результат сразу возвращается к переменному «сумматор», тогда как при вызове сумматора (0) результат не сохраняется нигде, функция просто вызвана. Когда во втором фрагменте кода я бы сделал: adder = сумматор (0), вторая часть кода также отлично работает – Jackques