要返回的表达式。如果省略,则返回undefined。
返回非假的是一样的for循环continue语句;它会立即跳到下一个迭代。
由于undefined
的计算结果为false
,为什么迭代在以下跳过?
$.each([1,2,3], function(k, v){
if(v > 1)
return;
console.log(v); //1
});
要返回的表达式。如果省略,则返回undefined。
返回非假的是一样的for循环continue语句;它会立即跳到下一个迭代。
由于undefined
的计算结果为false
,为什么迭代在以下跳过?
$.each([1,2,3], function(k, v){
if(v > 1)
return;
console.log(v); //1
});
因为这就是.each
函数的设计目的。它测试严格等于false
。从source code:
for (; i < length; i++) {
value = callback.apply(obj[i], args);
if (value === false) {
break;
}
}
由于文档说:如果你return
与任何其他数值,回调函数会简单地停在你回来。如果你return false
- 只有false
- 它会中止整个事情。
这就是我想知道的。我会说“非错误”一词在文档中有点误导。谢谢 – Johan
[bug reporting site](http://bugs.jquery.com/)说:“jQuery Core API文档问题:文档问题应该报告给[api.jquery.com GitHub repository](http:/ /github.com/jquery/api.jquery.com/issues)祝你好运! – Blazemonger
没有迭代被跳过。如果该值大于1
,则只输出该值。 2
和3
都大于1
,因此它们的值不会被记录,所以您看不到数组中这些值的输出。
在我的控制台输出显示'1'。如果这不符合您的预期(您),您希望显示什么? – Styxxy
你的问题可以通过像'if(v <2)' - [fiddle](http://jsfiddle.net/mblase75/XYzd9/1/) – Blazemonger