Javascript 实施“继续;”jQuery中的关键字';s`each();`方法

Javascript 实施“继续;”jQuery中的关键字';s`each();`方法,javascript,jquery,loops,Javascript,Jquery,Loops,想象一下,我想在jQuery对象列表上循环,并为每个对象执行一些函数。然而,如果在某个地方,某个标准没有满足,那么我只想继续到其他对象。简单的伪代码可能类似于: $('#element').each(function(){ // some code here if (!$(this).is('.included')) { continue; // This keyword of course, doesn't work here } // more

想象一下,我想在jQuery对象列表上循环,并为每个对象执行一些函数。然而,如果在某个地方,某个标准没有满足,那么我只想
继续到其他对象。简单的伪代码可能类似于:

$('#element').each(function(){
    // some code here
    if (!$(this).is('.included')) {
       continue; // This keyword of course, doesn't work here
    }
    // more code here, which won't get executed for some elements
});
我希望达到与以下相同的效果:

for (var i = 0; i < 10; i++) {
    if (i % 2 == 0 ) {
        continue;
    }
    console.log(i);
}
for(变量i=0;i<10;i++){
如果(i%2==0){
继续;
}
控制台日志(i);
}

我知道我可以
返回false每个()中的某个地方方法,以完全打破循环。但我不想打破循环。我只想跳过一些元素。我也知道我可以使用
if-else
块跳过元素,但是有没有更简洁的方法呢?

只需使用
return而不是
继续
(不是
返回false;
)。

我真的不认为有必要使用
continue
语句:

$('#element').each(function(){
    // some code here
    if( $(this).is('.included') ) {
        // more code here, which won't get executed for some elements
    }
});

这应该是完全相同的,除非我遗漏了什么。

当您使用
时。每个
jQuery函数都传递一个函数,以便为数组中的每个值执行。
continue
关键字不包含在函数中,而仅包含在直接循环中。返回false值时jQuery中断的原因是jQuery库中的这一行:

if ( callback.apply( object[ name ], args ) === false ) {
  break;
}
当执行的函数返回false时,jQuery故意退出循环。加上这个是常识,对吗?由于它使用
===
,因此您可以返回任何不直接等于
false
的内容,包括
未定义的
空的
0
真的
,或任何内容。只要它不等于
false
,循环就会继续

$.each([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], function(i) {
  if(i > 5) { return false; } // if(i > 5) { break;    }
  if(i < 2) { return null;  } // if(i < 2) { continue; }
   console.log(i);
});
请注意,它没有记录0和1<代码>i
小于2,因此它在不记录日志的情况下继续运行。注意,它没有记录6、7、8和9。这是因为当
i
大于5时,它返回false。

表示:

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

我通常会
返回“continue”比简单的
返回更易读、更自解释
返回true
返回1


我还遇到了
返回'non-false'这是一种非常滑稽的方式。

是的,不幸的是,没有明确指出这一点(尽管的doco确实提到了它)。返回非false值可以做到这一点,但是没有明确的文档记录-(您可以从$.each()文档中猜到这一点,希望它具有类似的处理)
2
3
4
5