使用回拨函数“每个”时出错

时间:2014-12-19 23:34:50

标签: javascript callback

所以我试图重新创建“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

1 个答案:

答案 0 :(得分:5)

在版本2中,您将从forEach()回调函数返回。返回forEach函数,它继续下一次迭代,它不会从every函数返回。