我试图通过元件的阵列进行迭代。 jQuery的文档说:

jquery.Each()文档

  

返回非假相同在for循环中continue语句,它会立即跳到下一迭代。

我已经打过电话“返回非假的;”和“非假;” (没有返回)均未跳到下一迭代。相反,他们打破循环。我错过什么?

有帮助吗?

解决方案

它们通过非假的意思是:

return true;

因此,这代码:

var arr = [ "one", "two", "three", "four", "five" ];
$.each(arr, function(i) {
    if(arr[i] == 'three') {
        return true;
    }
    alert(arr[i]);
});

将提醒一个,两个,四个,五个

其他提示

通过“返回非假”,他们的意思是要返回的将不会制定出布尔值false任何价值。所以,你可以返回true1'non-false',或任何其他你能想到的。

的Javascript形式的具有“感实性”和“falsiness”的想法。如果一个变量的值,然后,通常9AS你会看到),它有“感实性” - 空,或没有价值趋向“falsiness”。下面可能有助于片段:

var temp1; 
if ( temp1 )...  // false

var temp2 = true;
if ( temp2 )...  // true

var temp3 = "";
if ( temp3 ).... // false

var temp4 = "hello world";
if ( temp4 )...  // true

希望帮助?

此外,它的值得检查从道格拉斯Crockford的这些视频

更新:感谢@cphpython为察觉的损坏的链接 - 我在现在的工作版本更新,以点

JavaScript语言

使用Javascript - 好的部件

不要忘记,你可以有时只是脱落块的末尾才能到下一个迭代:

$(".row").each( function() {
    if ( ! leaveTheLoop ) {
        ... do stuff here ...
    }
});

,而不是实际的返回这样的:

$(".row").each( function() {
    if ( leaveTheLoop ) 
        return; //go to next iteration in .each()
    ... do stuff here ...
});

在循环的只有的休息,如果你回到字面上false。例如:

// this is how jquery calls your function
// notice hard comparison (===) against false
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
   break;
}

这意味着你可以返回其他任何东西,包括undefined,这是你回报什么,如果你什么也不返回,所以你可以简单地用一个空的return语句:

$.each(collection, function (index, item) {
   if (!someTestCondition)
      return; // go to next iteration

   // otherwise do something
});

这是可能的,这可能因版本而异;这是适用于jQuery的1.12.4。但实际上,当你退出了该函数的底部,你也没有回来,这就是为什么循环继续,所以我希望,有没有可能任何这回没有什么可以的的继续环。除非他们想迫使大家开始返回的东西,以保持循环下去,什么都不返回的的是一种方式继续下去。

jQuery.noop()可以帮助

$(".row").each( function() {
    if (skipIteration) {
        $.noop()
    }
    else{doSomething}
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top