ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript のアロー関数と通常の関数では、「this」キーワードはどのように異なりますか?

JavaScript のアロー関数と通常の関数では、「this」キーワードはどのように異なりますか?

Mary-Kate Olsen
リリース: 2024-12-10 02:14:13
オリジナル
635 人が閲覧しました

How Does the

アロー関数とコンテキストのない「This」

ES6 では、アロー関数は関数宣言の簡潔な構文を提供します。ただし、アロー関数と従来の関数の大きな違いの 1 つは、「this」キーワードの処理です。

指定されたコードに示すように、オブジェクト内でアロー関数を使用する場合:

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
}
ログイン後にコピー

アロー関数内の「this」キーワードは「person」オブジェクトを参照していません。代わりに、アロー関数が作成されたスコープ (この場合はグローバル スコープ) を指します。したがって、「person.shout()」を呼び出すと、「jason」プロパティなしで「my name is」が記録されます。

この問題を解決するには、アロー関数の代わりに通常の関数構文を使用できます。

var person = {
  name: "jason",

  shout: function() {
    console.log("my name is ", this.name)
  }
}
ログイン後にコピー

通常の関数では、「this」は関数を所有するオブジェクトを指します。したがって、呼び出されたときに「my name is jason」が正しく出力されます。

または、アロー関数の構文に似た ES6 メソッド宣言構文を利用することもできます。

var person = {
  name: "jason",

  shout() {
    console.log("my name is ", this.name)
  }
}
ログイン後にコピー

この構文では、関数宣言でコロン (:) と "function" キーワードが省略されます。ただし、依然として通常の関数宣言構文を使用し、「this」がオブジェクトにバインドされていることを確認します。

以上がJavaScript のアロー関数と通常の関数では、「this」キーワードはどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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