Javascript 使用回调函数“every”时出错

Javascript 使用回调函数“every”时出错,javascript,callback,Javascript,Callback,因此,我尝试重新创建every方法,作为有说服力的JavaScript练习的一部分。我不明白为什么第二版不行,第一版行 这本书说,只有当谓词为数组的所有元素返回true时,every才返回true 第一版 第二版 在版本2中,您将从forEach回调函数返回。它返回到forEach函数,并继续到下一个迭代,它不会从每个函数返回。在版本2中,您是从forEach回调函数返回的。它返回到forEach函数,并继续到下一个迭代,而不是从每个函数返回。假设您有这些函数:函数foo{return'foo'

因此,我尝试重新创建every方法,作为有说服力的JavaScript练习的一部分。我不明白为什么第二版不行,第一版行

这本书说,只有当谓词为数组的所有元素返回true时,every才返回true

第一版

第二版


在版本2中,您将从forEach回调函数返回。它返回到forEach函数,并继续到下一个迭代,它不会从每个函数返回。

在版本2中,您是从forEach回调函数返回的。它返回到forEach函数,并继续到下一个迭代,而不是从每个函数返回。

假设您有这些函数:函数foo{return'foo';};函数栏{foo;返回'bar';};。当我叫酒吧时,它会返回什么?然后试着把它转换到你的版本2中,想象你有以下函数:函数foo{return'foo';};函数栏{foo;返回'bar';};。当我叫酒吧时,它会返回什么?然后试着把它转换到你的第二版。那么有没有办法从each函数返回呢?没有。你写第一个版本的方式是正常的。有趣。那么有没有办法从each函数返回呢?没有。你写第一个版本的方式是正常的。
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