使用回拨函数"每个"时出错

Dan*_* Ng 1 javascript callback

因此,我正在尝试重新创建"每个"方法,作为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
Run Code Online (Sandbox Code Playgroud)

第二版

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
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 5

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