0
    Array.prototype.forEach = function(callback, context) {
        for (var i = 0; i < this.length; i++) {
            callback.call(context || null, this[i], i, this);
        }
    };

    ["a", "b", "c"].forEach(function(value, index, array) {
        assert(value,
                "Is in position " + index + " out of " +
                        (array.length - 1));
    });

ここで が使用される理由がよくわかりませんnull。invoke を使用するとforeachcontextパラメーターが欠落している場合、それはnull?に置き換えられると思います。callback.call(context || null, this[i], i, this)実行しますか?誰かが私のためにこれを説明できますか?

4

2 に答える 2

1

「context」に偽の値を渡す(context || null)と、null になります。JS は最初のパラメータとして null を に渡しますcallback.call()。最初のパラメーターはthis、コールバック関数用です。

于 2013-08-07T02:25:47.640 に答える
1

それは実際にはそこにあるべきではありません。undefinedに引数nullとして渡された場合と同じ効果があります(関数の引数は に設定されます)。thisFunction.prototype.callthisundefined

于 2013-08-07T02:33:24.380 に答える