ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のアロー関数は「this」バインディングをどのように処理しますか?またその回避策は何ですか?
最新の JavaScript 機能であるアロー関数は、関数を宣言するための簡潔な構文を提供します。ただし、アロー関数と通常の関数の注目すべき違いの 1 つは、'this' バインディングに関する動作です。
アロー関数は、独自の 'this' バインディングを作成しません。 。代わりに、それを囲んでいるスコープから継承します。これは、アロー関数の 'this' が、周囲の関数またはグローバル スコープの 'this' と同じ値を参照することを意味します。
提供された例を検討してください。質問内:
var f = () => console.log(this);
ここで、アロー関数 'f' の 'this' はバインドされていません。 「f」が呼び出されると、グローバル スコープの「this」バインディングが使用されます。これは通常、ウィンドウ オブジェクトを参照します。その結果、「fBound()」を呼び出すと、意図したとおり「o」オブジェクトではなくウィンドウ オブジェクトがログに記録されます。
アロー関数はサポートしていません「bind」を使用した従来のバインディングですが、同様の機能を実現する別のアプローチもあります。
var fBound = () => { console.log(this); }.bind(o);
class MyClass { constructor() { this.f = () => console.log(this); } } const o = new MyClass(); o.f(); // logs the 'o' object
結論として、アロー関数には多くの利点がありますが、「this」バインディングに関しては通常の関数とは異なる動作をします。この違いを理解することで、アロー関数と代替アプローチを効果的に使用して、目的の「これ」バインディングを実現できます。
以上がJavaScript のアロー関数は「this」バインディングをどのように処理しますか?またその回避策は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。