所以我试图重新创建“Every”方法,作为Eloquent JavaScript练习的一部分。我无法弄清楚为什么版本2不起作用(版本1工作)。
这本书说“只有当谓词对数组的所有元素都返回true时,每个返回都是真的”
第一版
function every(array, test)
{
var boolean = true;
array.forEach(function(ele)
{
if (!test(ele))
boolean = false;
});
return boolean;
}
console.log(every([NaN, NaN, NaN], isNaN));
// → true
console.log(every([NaN, NaN, 4], isNaN));
// → false
第二版
function every(array, test)
{
array.forEach(function(ele)
{
if (!test(ele))
return false;
});
return true;
}
console.log(every([NaN, NaN, NaN], isNaN));
// → true
console.log(every([NaN, NaN, 4], isNaN));
// → true
答案 0 :(得分:5)
在版本2中,您将从forEach()
回调函数返回。返回forEach
函数,它继续下一次迭代,它不会从every
函数返回。