MoonCheung

MoonCheung

人生路漫漫,何曾有坦途。:)

アロー関数と通常の関数の違い

  1. 矢印パラメータについて:
    1. 矢印関数にパラメータがない場合、空の括弧を直接書きます。
    2. 矢印関数のパラメータが 1 つだけの場合、パラメータを括弧で囲みます。
    3. 矢印関数のパラメータが複数ある場合、パラメータをカンマ (,) で区切って括弧で囲みます。
  2. 矢印関数の本体について:
    1. 矢印関数には通常の関数の「function」キーワードはありません。
    2. 矢印関数の本体が 1 つのコードだけで、変数を単純に返すか、単純な JS 式を返す場合、本体の中括弧{}を省略できます。
    3. 矢印関数の本体が 1 つのコードでオブジェクトを返す場合、オブジェクトを括弧で囲む必要があります。
    4. 矢印関数の本体が 1 つの文であり、戻り値が必要ない場合(最も一般的なのは関数の呼び出しです)、その文の前に「void」キーワードを追加することができます。
  3. 違いは次のとおりです:
    1. 矢印関数の本質:
      1. 構文がより簡潔で明確です。
      2. 矢印関数は匿名関数です。
      3. 矢印関数は自身の this を作成せず、自身のスコープチェーンの外側から this を継承します。なぜなら、矢印関数の this の指す先は定義された時点で確定し、変更できないからです。
    2. 通常の関数の本質:
      1. new の本質は新しいオブジェクトを生成し、そのオブジェクトの_proto_(プロトタイプチェーン)を関数の prototype(プロトタイプ)に指定し、call メソッドを実行し、最後に新しいオブジェクトを宣言済みの変数に割り当てます。
      2. スコープチェーン内で this の実行コンテキストを作成し、優先度は new > bind > obj > window です。
      3. 関数式、関数宣言、匿名関数など、複数の関数を宣言できます。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。