为什么我的布尔值返回'undefined'?

时间:2015-09-18 21:23:24

标签: javascript node.js boolean logical-operators reduce

我正在使用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)); 两次,为什么我得到未定义?

我正在使用节点作为控制台。

1 个答案:

答案 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