Доброго времени суток.
Вот функция, которую нашел в одном учебнике. Сразу задам вопрос: Как работает функция equals? Думаю, весь код не нужно читать, нужны предпоследняя и предпредпоследние функции:
function forEach(array, action) {
"use strict";
var i = 0;
for (i = 0; i < array.length; i += 1) {
action(array[i]);
}
}
function reduce(combine, base, array) {
"use strict";
forEach(array, function (e) {
base = combine(base, e);
});
return base;
}
function count(test, array) {
return reduce(function(total, element) {
return total + (test(element) ? 1 : 0);
}, 0, array);
}
function equals(x) {
return function(element) {return x === element;};
}
function countZeroes(array) {
return count(equals(0), array);
}
Я не понимаю, как elements попадает внутрь функции и выходит булъиновое значение...
Ведь по-идее любое число в equals становится переменной X, а как тогда они производят сразвнение с elements, которое вообще определяется в функциях на уровни выше?