Я полагаю, что это вопрос новичков, но я не могу понять это. У меня есть этот код, с красноречивым JavaScript, о функции уменьшения:Newb: Почему эта переменная сохраняется вместо сброса?
function forEach (info, func) {
for (i = 0; i < info.length; i++) {
func(info[i]);
}
}
function reduce (combine, base, array) {
forEach(array, function(elem) {
base = combine(base, elem);
console.log("The base is: " + base);
});
return base;
}
function countZeroes(array) {
function counter(total, element) {
console.log("The total is: " + total);
return total + (element === 0 ? 1 : 0);
}
return reduce(counter, 0, array);
}
То, что я не могу понять, это, как количество нулей хранится в общей сложности на каждом вызове функции? Почему он держит бегущую вкладку вместо того, чтобы каждый раз стирать?
Не могли бы вы прояснить вопрос. Что вы ожидаете, каждый раз «уничтожается»? – seanmcl
Существующее значение передается функции ('counter') через параметр' total', а функция * добавляет * к существующему счетчику: 'total + (element === 0? 1: 0)'. –
Похоже, Марцин прибил его. Но предупреждение: ваш 'i' в' forEach' просачивается в глобальную область, вы должны использовать 'for (var i = 0; ...'. – bfavaretto