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