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 のインストール プロセス (グラフィック チュートリアル)

推薦する

MySQL マスタースレーブ同期、トランザクションロールバックの実装原理

ビンログBinLog は、データベース テーブル構造の変更 (テーブルの作成、変更など) とテーブル...

最も完全な 50 の MySQL データベース クエリ演習

このデータベース クエリ ステートメントは、インターネット上の 50 個のデータベース クエリ練習問...

Win10 インストール Linux システム チュートリアル ダイアグラム

Windows システムに仮想マシンをインストールするには、 VMware Workstationソ...

Vue3.0のさまざまなリスニング方法の包括的な概要

目次リスナー1.ウォッチエフェクト2.見る1.1 聴くための最初の方法1.2 聞く2つ目の方法1.3...

HTMLテキスト内のすべてのタグを置き換える方法

(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...

HTML 基本構造_Powernode Java アカデミー

多くの場合、Web ページ開発を学ぶときに最初に印象に残るのは、html または htm サフィック...

centos7.2 オフラインインストール mysql5.7.18.tar.gz

ネットワークが分離されているため、MySQL は yum を使用してインストールできません。ここでは...

Windows での MySQL 8.0.12 のインストール手順と基本的な使用方法のチュートリアル

この記事では、WindowsでのMySQL 8.0.12のインストール手順と使用方法のチュートリアル...

さまざまなマウスの形状を表現する方法

<a href = "http://" style = "cur...

MySQLでよく使われる演算子と関数の概要

まずデータ テーブルを作成しましょう。 使用テスト; テーブル「従業員」を作成します( emp_no...

Vuexの特性と機能の詳細な説明

目次Vuex とは何ですか? Vuexの5つの特性vuex の State 機能とは何ですか? vu...

docker run -v はデータボリュームを異常にマウントし、コンテナのステータスは常に再起動になります。

問題点: docker run に -v パラメータを追加すると、コンテナは常に再起動状態になります...

テーブルパーティションとパーティション分割とは何ですか?MySqlデータベースパーティションとテーブルパーティション分割方法

1. テーブルとパーティションを分割する必要があるのはなぜですか?日常の開発では、大きなテーブルに遭...

ノードイベントループとメッセージキューの分析

目次非同期とは何ですか?なぜ非同期性が必要なのでしょうか?非同期IOとは何ですか?イベントループとは...

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...