Показать сообщение отдельно
  #1 (permalink)  
Старый 20.06.2014, 23:55
Новичок на форуме
Отправить личное сообщение для Dionid Посмотреть профиль Найти все сообщения от Dionid
 
Регистрация: 11.06.2014
Сообщений: 9

Не могу разобраться, как работает функция
Доброго времени суток.
Вот функция, которую нашел в одном учебнике. Сразу задам вопрос: Как работает функция 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, которое вообще определяется в функциях на уровни выше?
Ответить с цитированием