2

MDN 上的退货声明:

要返回的表达式。如果省略,则返回 undefined。

$.each 上的 jQuery 文档

返回非 false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。

既然undefined评估为false,为什么下面会跳过迭代?

$.each([1,2,3], function(k, v){
    if(v > 1)
        return;
    console.log(v); //1
});

小提琴

4

2 回答 2

6

没有迭代被跳过。仅当它大于 时才输出该值12并且3都大于1所以它们的值不会被记录,所以你看不到数组中这些值的输出。

于 2013-10-02T15:27:02.290 回答
3

因为这就是.each函数的设计目的。它测试与 的严格相等性false。从源代码

    for (; i < length; i++) {
        value = callback.apply(obj[i], args);
        if (value === false) { 
            break;
        }
    }

正如文档所说:如果您return使用任何其他值,回调函数将简单地停止您返回的位置。如果你return false——而且只有false——它会中止整个事情。

于 2013-10-02T15:32:46.057 回答