ES6 のアロー関数と "this" の字句結合
ES6 のアロー関数の際立った特徴の 1 つは、その独自の処理です。 「this」キーワードの。 「this」を関数の呼び出しコンテキストに動的にバインドする通常の関数とは異なり、アロー関数は「this」を周囲の字句スコープに字句的にバインドします。
これは、アロー関数内の「this」が常にオブジェクトを参照することを意味します。アロー関数の定義が含まれています。例:
var testFunction = () => { console.log(this); }; testFunction();
このコードでは、アロー関数内の「this」は、ご推測のとおり、ファットアロー関数自体を参照していません。代わりに、アロー関数定義を含むオブジェクトを参照します。アロー関数はグローバル スコープ内で定義されているため、「this」はグローバル コンテキストを持ちます。したがって、コードの出力はグローバル オブジェクトになります。
字句バインディングは、関数の実行中に "this" の値が変更される可能性がある状況で役立ちます。たとえば、次の例を考えてみましょう。
function Person() { this.age = 0; setInterval(() => { this.age++; // |this| properly refers to the person object }, 1000); } var p = new Person();
この例では、アロー関数は、それを囲んでいる Person オブジェクトの "this" 値をキャプチャします。これにより、setTimeout コールバックが非同期に呼び出され、実行コンテキストが変更された場合でも、インクリメント操作が常に正しい person インスタンスで実行されることが保証されます。
要約すると、ES6 のアロー関数は "this" を字句的にバインドします。字句スコープを囲みます。これにより、関数の呼び出しコンテキストに関係なく、「this」が同じオブジェクトを参照できるようになり、非同期関数または入れ子関数のシナリオでの「this」の処理が容易になります。
以上がES6 のアロー関数は「this」キーワードをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。