私は要素の配列を反復処理しようとしています。 jQueryのドキュメントは言う:
False以外の値を返すことはforループのcontinueステートメントと同じです。次の繰り返しにすぐにスキップします。
私は「return non-false」と呼んでみました。 「偽ではない」どちらも次の繰り返しにスキップしません。代わりに、彼らはループを破ります。何が足りないの?
彼らが非偽であるということは、
return true;
だから、このコード:
var arr = [ "one", "two", "three", "four", "five" ];
$.each(arr, function(i) {
if(arr[i] == 'three') {
return true;
}
alert(arr[i]);
});
1、2、4、5に警告します
'false以外を返す'とは、うまくいかない値を返すことを意味します。それで、あなたはtrue
、1
、'non-false'
、またはあなたが考えることができる他の何でも返すことができます。
Javascriptのようなものは、「真実性」と「虚偽」の考えを持っています。変数に値がある場合、一般的には9になりますが、それは「真実性」を持ちます。つまり、値がない場合は「虚偽」になります。以下のスニペットは役に立つかもしれません:
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 - 私は今、作業バージョンを指すように更新しました
次の繰り返しにたどり着くためにブロックの端から落ちることができることを忘れないでください。
$(".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に適用されます。しかし、実際には、関数の下部を終了すると、何も返されないため、ループが続行されます。そのため、何も返さない可能性はまったくないと予想されます。 ループを続けます。誰もがループを続けるために何かを返すことを強制したくないのであれば、何も返さないことを続けるにはがあることを意味します。