ホームページ > ウェブフロントエンド > jsチュートリアル > ES6 のアロー関数は「this」キーワードをどのように処理しますか?

ES6 のアロー関数は「this」キーワードをどのように処理しますか?

Linda Hamilton
リリース: 2024-12-27 20:48:14
オリジナル
213 人が閲覧しました

How Do ES6 Arrow Functions Handle the

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート