function each(collection, callback) {
var arr = [];
for(var i = 0; i < collection.length; i++) {
var result = callback(collection[i])
if (typeof result !== 'undefined') {
arr.push(callback(collection[i]));
}
}
return arr
}
function isNumber(item) {
if (typeof item === "number") {
return item * 2;
}
}
Я пытаюсь понять функции высшего порядка. Вышеупомянутое работает, но, по-видимому, не рекомендуется возвращать значение с isNumber
. Мне сказали, что должно быть возвращено логическое значение. Почему? Оно работает.
Обновление: похоже, это из-за названия функции! Спасибо всем, я просто подумал, что может быть какая-то техническая причина
isNumber
почти как вопрос, где ответ будет да/нет илиboolean
. Ваш код будет выглядеть примерно так: isNumber(5) == 10, что просто читается неправильно. Я также вообще не вижу актуальности функцииeach
в контексте этого вопроса. - person Hopeful Llama   schedule 16.06.2016is
, всегда будут содержать ожидание логического результата, который либо есть, либо не является. - person Alex K.   schedule 16.06.2016isNumber(item)
должна удваивать число? Не должна ли функция, удваивающая число, называтьсяdoubleNumber
илиmultiplyNumberByTwo
или как-то иначе, что не удивило бы другого программиста? - person Ghost   schedule 16.06.2016result
. - person Redu   schedule 16.06.2016