Javascript 为什么我的布尔值返回';未定义';?
我正在研究雄辩的Javascript,有一个练习是制作一个Javascript 为什么我的布尔值返回';未定义';?,javascript,node.js,boolean,logical-operators,reduce,Javascript,Node.js,Boolean,Logical Operators,Reduce,我正在研究雄辩的Javascript,有一个练习是制作一个每个函数,它接受一个数组和一个函数,并根据数组中的所有项在完成函数后返回的内容返回true或false 我很困惑,因为当我在函数中执行console.log()时,我会得到两次布尔值……但是当我执行console.log(every(arr,func))时,我会得到未定义的 var every = function(arr, req){ arr.map(function(item){ return req(item
每个
函数,它接受一个数组和一个函数,并根据数组中的所有项在完成函数后返回的内容返回true或false
我很困惑,因为当我在函数中执行console.log()时,我会得到两次布尔值……但是当我执行console.log(every(arr,func))时,我会得到未定义的
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));
那么,为什么我在函数中得到两次true
,为什么我得不到定义呢
我使用node作为控制台。您需要在最外层的函数中添加一个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您从未从each
返回任何内容,因此console.log(each(…)
将始终是未定义的。除了缺少的返回
,您真的应该使用arr.each(req)
,如果您选择了reduce
,那么您应该始终传递一个初始累加器值来覆盖空数组。@KevinB绝对是,我的错。