2013-01-17 9 views
9

私はbind()関数に関するいくつかのドキュメントをjavascriptで読んでいました。bind()に `undefined`を渡すことは何を意味しますか?

例の一つは、このようにオフを開始:

function list() { 
    return Array.prototype.slice.call(arguments); 
} 

var list1 = list(1, 2, 3); // [1, 2, 3] 

// Create a function with a preset leading argument 
var leadingZeroList = list.bind(undefined, 37); 

var list2 = leadingZeroList(); // [37] 

だから私の質問は次のとおりです。

それはここbind()(undefined, 37)を渡すことを意味しない、正確に何を?

答えて

11

これは、thisが、結果として得られるバインドされた関数内のものを参照しないようにすることを意味します。つまり、バインドされた関数を呼び出すと、thisundefinedになります。まさにその理由はコードに依存します。多くの機能はthisを使用していないので、整頓の方法です。非strictモードでは、それはランタイムがundefinedのグローバルオブジェクト(ブラウザでwindow)を代用しますケースかもしれないが、私はその動作を規定なしスペックを見つけることができないこと

注意。 strictモードでは、そのような置換は実行されません。

+0

彼らが "プリセット引数"と言うとき、それらは37を参照していますか?(未定義ではありません) – BeeBand

+2

@BeeBand yes - bind()の最初の引数は、結果の関数が呼び出されたときに設定されます。後続のパラメータは、呼び出しのポイントで渡されるものの前に渡されます。 – Pointy

+0

@Pointyありがとうございます。そこには –

3

bindの最初のパラメータは、関数内でthisの値を指定します。オブジェクトに作用する「メソッド」に変換するために使用することができます。しかし、undefinedを渡すと、それは関数のままであることを意味します。上記の例では違いはありません。

関連する問題