2

return ステートメントの MDN:

返す式。省略した場合、代わりに undefined が返されます。

$.each に関する jQuery ドキュメント:

false 以外を返すことは、for ループの continue ステートメントと同じです。次の繰り返しにすぐにスキップします。

undefinedが に評価されるのでfalse、以下で反復がスキップされるのはなぜですか?

$.each([1,2,3], function(k, v){
    if(v > 1)
        return;
    console.log(v); //1
});

フィドル

4

2 に答える 2

6

反復はスキップされません。より大きい場合にのみ値を出力します123はどちらもより大きい1ため、それらの値はログに記録されないため、配列内のこれらの値の出力は表示されません。

于 2013-10-02T15:27:02.290 に答える
3

それが.each関数が行うように設計されているためです。と厳密に等しいかどうかをテストしfalseます。ソースコードから:

    for (; i < length; i++) {
        value = callback.apply(obj[i], args);
        if (value === false) { 
            break;
        }
    }

ドキュメントが言うように:return他の値を使用すると、コールバック関数は戻ったところで停止します。あなたreturn falseだけの場合false、それはすべてを中止します。

于 2013-10-02T15:32:46.057 に答える