JavaScript の矢印関数と通常の関数の違いの詳細な説明

JavaScript の矢印関数と通常の関数の違いの詳細な説明

この記事では、JavaScriptにおけるアロー関数と通常の関数の違いについて解説します。具体的な内容は以下のとおりです。

矢印関数:

楽しみましょう = () => {
    console.log('ララララ');
}

通常の機能:

関数fun() {
    console.log('ララ');
}

矢印関数は匿名関数と同等であり、関数定義を簡素化します。矢印関数には 2 つの形式があります。1 つは、{...} と return が省略された 1 つの式のみを含む形式です。複数の文を記述できる型もあり、その場合は { ... } と return を省略することはできません。

矢印関数は匿名関数であり、コンストラクターとして使用したり、new と共に使用したりすることはできません。

FunConstructor = () => {
    コンソールログ('lll');
}

fc = new FunConstructor(); とします。

矢印関数は引数をバインドせず、代わりに残りパラメータを使用します...解決策

関数A(a){
  console.log(引数);
}
A(1,2,3,4,5,8); // [1, 2, 3, 4, 5, 8, 呼び出し先: ƒ, Symbol(Symbol.iterator): ƒ]


B = (b)=>{とする
  console.log(引数);
}
B(2,92,32,32); // キャッチされない ReferenceError: 引数が定義されていません


C = (...c) => {とする
  コンソールログ(c);
}
C(3,82,32,11323); // [3, 82, 32, 11323]

アロー関数はthisをバインドせず、それが配置されているコンテキストのthis値を自身のthis値として取得します。

var obj = {
  10,
  b: () => {
    console.log(this.a); // 未定義
    console.log(this); // ウィンドウ {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
  },
  c: 関数() {
    コンソールログ(this.a); // 10
    console.log(this); // {a: 10, b: ƒ, c: ƒ}
  }
}
obj.b(); 
オブジェクト
var obj = {
  10,
  b: 関数(){
    コンソールログ(this.a); //10
  },
  c: 関数() {
     戻り値 () =>{
           コンソールログ(this.a); //10
     }
  }
}
obj.b(); 
obj.c()();

矢印関数がcall()またはapply()メソッドを通じて関数を呼び出す場合、渡されるパラメーターは 1 つだけであり、 thisには影響しません。

obj2 = {
    10,
    b: 関数(n) {
        f = (n) => n + this.a とします。
        f(n) を返します。
    },
    c: 関数(n) {
        f = (n) => n + this.a とします。
        m = {とします
            答え: 20
        };
        f.call(m,n) を返します。
    }
};
コンソールログ(obj2.b(1)); // 11
コンソールログ(obj2.c(1)); // 11

アロー関数にはプロトタイププロパティがありません

var a = ()=>{
  1 を返します。
}

関数b(){
  2を返します。
}

console.log(a.prototype); // 未定義
console.log(b.prototype); // {コンストラクタ: ƒ}

矢印関数はジェネレーター関数として使用できず、yieldキーワードも使用できません。

要約する

  • 矢印関数のthisは常にそのコンテキストのthisを指しており、 call()bind()apply()などのメソッドは参照を変更できません。
  • 通常の関数の this は、それを呼び出すオブジェクトを参照します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • より良い JavaScript 条件文と一致条件を書くためのヒント (要約)
  • JSの矢印関数におけるこのポイントの詳細な説明
  • JavaScriptのアロー関数の特徴と通常の関数との違い
  • JS 矢印関数に適さないシナリオは何ですか?
  • JavaScript で矢印関数を使用できないシナリオはどれですか
  • JavaScript の条件付きアクセス属性と矢印関数の紹介

<<:  NexusはHTTPSプロトコルをサポートするためにnginxプロキシを使用します

>>:  VMware vCenter 6.7 のインストール プロセス (グラフィック チュートリアル)

推薦する

Linux CDの意味と使い方

Linux CD とはどういう意味ですか? Linux では、cd はディレクトリの変更を意味します...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

幅の比率に応じて高さを変えるCSSを実装するいくつかの方法

[解決策1: パディングの実装]原理:要素の padding の値がパーセンテージの場合、このパーセ...

JavaScript で大きなファイルの並列ダウンロードを実装する方法

目次1. HTTP範囲リクエスト1.1 範囲構文2. 大きなファイルをダウンロードする方法2.1 補...

Vue ページをリフレッシュするために provide と injection を適用する

目次方法1: 関数を直接呼び出す方法2: provide / inject (静的更新) を使用する...

Linuxカーネルとデバイスツリーのコンパイルと書き込みを分析する

目次1. 材料を準備する2. Linuxカーネルファイルをダウンロードする3. コンパイル4. TF...

JavaScript 配列 sort() メソッドの基本的な使い方と落とし穴

序文日常のコード開発では、配列のソートに関連する操作が多数あります。JavaScript では、so...

Linuxにソフトウェアをインストールするいくつかの方法の詳細な説明

1. RPM パッケージのインストール手順: 1. soft.version.rpm などの対応する...

JavaScript データ型変換の例 (他の型を文字列、数値型、ブール型に変換する)

序文データ型変換とは何ですか?フォームまたはプロンプトを使用して取得されるデフォルトのデータ型は文字...

HTML の水平および垂直中央揃えの問題の概要

最近、センタリングの問題に数多く遭遇したので、後で簡単に見つけられるように、時間をかけてそれらを要約...

Linux telnetコマンドの使用

1. はじめにtelnet コマンドは、リモート ホストにログインするために使用されます。これは、T...

HTMLページのヘッダーコードは完全に明確です

以下のコードはすべて <head>...</head> の間にあり、具体的な...

Vueはカスタムツリーコンポーネントを再帰的に実装します

この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...

ソースコードから MySQL 8.0.20 をコンパイルしてインストールする詳細なチュートリアル

前回の記事では、次のことを紹介しました。 MySQL8.0.20 インストール チュートリアルとイン...

カルーセル効果を実現するための純粋なjs

この記事では、カルーセルマップの効果を実現するためのjsの具体的なコードを参考までに共有します。具体...