1
私はJavascriptの例題を見つけましたが、正当化にかなり満足していないか、または関数内でthis
の範囲で混乱しています。以下の例を参照してください:2回目のfn関数呼び出しで出力が2になるのはなぜですか?
var length = 10;
function fn() {
console.log(this.length);
}
var obj = {
length: 5,
method: function(fn) {
fn();
arguments[0]();
}
};
obj.method(fn, 1);
初めて10
は、それがグローバルスコープから呼ばれているので、理解している記録されます。しかし、2回目は2
が記録されています。私は答えを探して、これは私が得たものである -
我々は、引数[]配列を使用したJavaScript 機能で任意の数の引数にアクセスできることを知っています。
したがって、arguments0はfn()を呼び出すだけです。今FN内では、この機能の スコープはarguments配列、および引数の 長さをログになり、[]を返します2
誰もがこの1に、より良い答えを持っていますか?
それは、関数の呼び出し側でありスコープ/ブロックと呼ばれることではありません。 – dhawal
この場合。はい。 Scopeは 'this'の値とは関係ありません(あなたが作成したスコープから' this'の値をコピーする矢印関数を使わない限り)。 – Quentin
入手しました。これを覚えておいてください。 「これは簡単ではない;) – dhawal