我知道使用核心 Javascript 我们可以做这样的事情:
for(i=1;i<10;i++){
if(i==5){
//break or continue
}
}
但为什么这是不正确的?
$.each(iteratorarray,function(i){ //iteratorarray - just an array
if(i==5){
//break or continue,will cause error here
}
});
我知道使用核心 Javascript 我们可以做这样的事情:
for(i=1;i<10;i++){
if(i==5){
//break or continue
}
}
但为什么这是不正确的?
$.each(iteratorarray,function(i){ //iteratorarray - just an array
if(i==5){
//break or continue,will cause error here
}
});
这种行为是由 jQuery 实现的。这就是 jQuery api 文档所说的“我们可以break
通过使回调函数 return 在特定迭代中循环 $.each() false
。返回与 for 循环中non-false
的语句相同continue
;它将立即跳到下一次迭代”,你可以在这里阅读。
return
将继续,return false
将中断。该文档通过示例讨论了break
替代品,但它仍然指定return
了.each
回调中的功能。
$.each
使用回调来执行自定义代码,break
是一个可以破坏包装循环的控制语句。break
orcontinue
必须直接从主体调用,而不是loop
从委托函数调用。
$.each(iteratorarray,function(i){ //iteratorarray - just an array
if(i==5){
//break or continue,will cause error here
}
});
可以认为等于
for(i=0;i<iteratorarray.length;i++){
if(callback(i, iteratorarray[i]) === false){
break;
}
}
在这里,您的代码位于callback()
函数内部,因此您不能loop control
在回调中使用语句。
您可以在文档中阅读更多内容。
在这种$.each
情况下,没有可以跳出的循环,这就是您收到错误的原因。然而,jQuery 这样做的方式是,breaks
如果你的函数返回false
.
您还可以使用 JavaScript 的every方法来迭代数组元素。
every 方法对每个数组元素调用一次 callbackfn 函数,按索引升序排列,直到 callbackfn 函数返回 false。如果找到导致 callbackfn 返回 false 的元素,则 every 方法立即返回 false。否则,every 方法返回 true。