我要遍历一个元素数组。jQuery的文档说:

jquery.Each()的文档

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

我尝试调用'return non-false;'和'non-false;' (sans return)它们都不会跳到下一个迭代。相反,他们打破了循环。我错过了什么?


当前回答

非假的意思是:

return true;

这段代码:

var arr =“1”,“2”,“三”、“四”、“五”); 美元。每个(arr,函数(i) { If (arr[i] == ' 3 ') { 返回true; } console.log (arr[我]); }); < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js " > < /脚本>

将log 1 2 4 5。

其他回答

jQuery.noop()可以提供帮助

$(".row").each( function() {
    if (skipIteration) {
        $.noop()
    }
    else{doSomething}
});

Javascript有“真实”和“虚假”的概念。如果一个变量有一个值,那么通常(正如你将看到的)它有“真实”- null,或没有值倾向于“虚假”。下面的代码片段可能会有所帮助:

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

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

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

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

希望这有帮助?

另外,值得一看Douglas Crockford的这些视频

更新:感谢@cphpython发现损坏的链接-我已经更新到指向工作版本

Javascript语言

Javascript -好的部分

通过'return non-false',他们的意思是返回任何不会被计算为布尔false的值。你可以返回true 1, 'non-false'或者任何你能想到的。

不要忘记,有时候你可能只是从块的末端掉下来,进入下一个迭代:

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

而不是像这样返回:

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

非假的意思是:

return true;

这段代码:

var arr =“1”,“2”,“三”、“四”、“五”); 美元。每个(arr,函数(i) { If (arr[i] == ' 3 ') { 返回true; } console.log (arr[我]); }); < script src = " https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js " > < /脚本>

将log 1 2 4 5。