要返回的表达式。如果省略,则返回 undefined。
返回非 false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。
既然undefined
评估为false
,为什么下面会跳过迭代?
$.each([1,2,3], function(k, v){
if(v > 1)
return;
console.log(v); //1
});
要返回的表达式。如果省略,则返回 undefined。
返回非 false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。
既然undefined
评估为false
,为什么下面会跳过迭代?
$.each([1,2,3], function(k, v){
if(v > 1)
return;
console.log(v); //1
});
没有迭代被跳过。仅当它大于 时才输出该值1
。2
并且3
都大于1
所以它们的值不会被记录,所以你看不到数组中这些值的输出。
因为这就是.each
函数的设计目的。它测试与 的严格相等性false
。从源代码:
for (; i < length; i++) {
value = callback.apply(obj[i], args);
if (value === false) {
break;
}
}
正如文档所说:如果您return
使用任何其他值,回调函数将简单地停止您返回的位置。如果你return false
——而且只有false
——它会中止整个事情。