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