function every(array, predictate){
array.forEach(function(x){
if (!predictate(x))
{
return false;
}
});
return true;
}
console.log(every([NaN, NaN, NaN], isNaN));
//true
console.log(every([NaN, NaN, 4], isNaN));
//suppose to return false, but still return true...
第二个console.log
应返回false但返回true。我做错了什么?
答案 0 :(得分:2)
return false
是forEach
中使用的匿名函数的返回。所以它不会为every
返回任何内容。如果你想使用forEach
并返回false,你必须这样做:
function every(array, predictate) {
var result = true;
array.forEach(function(x) {
if (!predictate(x)) {
result = false;
}
});
return result;
}
答案 1 :(得分:1)
您的return false
声明适用于forEach
回调功能,不适用于外部every
。
every
将始终返回true,除非您将其更改为:
function every(array, predictate){
var retValue = true;
array.forEach(function(x){
if (!predictate(x))
{
retValue = false;
}
});
return retValue;
}