我正在使用Eloquent Javascript并且有一个练习来创建一个every
函数,它接受一个数组和一个函数并返回true或false,具体取决于数组中的所有项目在经过功能
我很困惑,因为当我在函数中执行console.log()时,我得到布尔值两次......但是当我执行console.log(每个(arr,func))时,我得到{{1} }。
undefined
那么为什么我在我的函数中得到var every = function(arr, req){
arr.map(function(item){
return req(item);
}).reduce(
function(total, num){
// this returns: true
// true
console.log(total && num);
return total && num;
});
}
// This returns undefined
console.log(every([NaN, NaN, NaN], isNaN));
两次,为什么我得到未定义?
我正在使用节点作为控制台。
答案 0 :(得分:2)
您需要在最外面的函数中添加一个return语句,如下所示:
var every = function(arr, req){
return arr.map(function(item){
return req(item);
}).reduce(
function(total, num){
return total && num;
});
}
// This returns true
console.log(every([NaN, NaN, NaN], isNaN));
编辑:修正了返回值,谢谢@Kevin B