要素の配列を反復処理しようとしています。jQueryのドキュメントには次のように書かれています。
false以外を返すことは、forループのcontinueステートメントと同じであり、すぐに次の反復にスキップします。
'returnnon-false;'を呼び出してみました。および'非偽;' (戻り値なし)どちらも次の反復にスキップしません。代わりに、それらはループを壊します。私は何が欠けていますか?
要素の配列を反復処理しようとしています。jQueryのドキュメントには次のように書かれています。
false以外を返すことは、forループのcontinueステートメントと同じであり、すぐに次の反復にスキップします。
'returnnon-false;'を呼び出してみました。および'非偽;' (戻り値なし)どちらも次の反復にスキップしません。代わりに、それらはループを壊します。私は何が欠けていますか?
非偽とは、次のことを意味します。
return true;
したがって、このコード:
var arr = ["one", "two", "three", "four", "five"];
$.each(arr, function(i) {
if (arr[i] == 'three') {
return true;
}
console.log(arr[i]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
ログone
に記録されますtwo
、、、。four
five
'return non-false'とは、ブール値のfalseに変換されない値を返すことを意味します。だから、、、、、またはあなたが考えることができる他のものをtrue
返す1
ことができます。'non-false'
Javascript には、「真実」と「虚偽」という概念があります。変数に値がある場合、一般的には 9ご覧のように) それは「真実性」を持っています - 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に感謝します-現在動作中のバージョンを指すように更新しました
ループは、文字どおりに戻った場合にのみ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}
});