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

推薦する

HTML Selectは、デフォルトの選択を設定するためにselected属性を使用します。

オプションに属性 selected = "selected" を追加すると、それ...

FTP環境設定ソリューション(vsftpd)の詳細な説明

1. vsftpdコンポーネントをインストールするインストールコマンド: [root@ink4t ~...

Sitemesh チュートリアル - ページ装飾技術の原理と応用

1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...

Linux の一般的なコマンドとショートカット キーの紹介

目次1 システムの紹介2 システムショートカット3 一般的なシステムコマンド1 システムの紹介 1....

MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル MySQL 8.0 の新しいパスワード認証方法

この記事では、参考までにMySQL8.0.11のインストールと設定方法、およびMySQL8.0の新し...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

Ubuntu 18.04 のインストールで「ldlinux.c32 のロードに失敗しました」というエラーが表示され、解決手順がわかりません

序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...

Dockerはローカルイメージをパッケージ化し、他のマシンに復元します

1. docker imagesを使用して、このマシン上のすべてのイメージファイルを表示します。 2...

Kubernetes ポッドオーケストレーションとライフサイクルの詳細な説明

目次K8Sマスター基本アーキテクチャポッドオーケストレーションコンセプトPod オブジェクトのプロパ...

HTML と CSS の命名規則の概要

CSS命名規則 ヘッダー: ヘッダーコンテンツ: コンテンツ/含むフッターナビゲーション: navサ...

MySQLパラダイムの使用に関する詳細な説明

1. パラダイムこのパラダイムの英語名は Normal Form であり、1970 年代にリレーショ...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

Docker 公開方法は、DevOps (送信、コンパイル、パッケージ化、リリースなどの一連のイベ...

CSS モジュールソリューション

CSS のモジュール ソリューションは、JS のモジュール ソリューションと同じくらい多く存在すると...

Windows で mysql 8.0.12 をインストールするための詳細なチュートリアル

この記事では、MySQL 8.0.12のインストール方法に関する詳細なチュートリアルを参考までに紹介...