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 の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...

LinuxサーバーにGRUBをインストールする手順

Linux サーバーに GRUB をインストールする方法クラウド移行ツールを使用して、CentOS ...

MySQL MGR 構築時の一般的な問題と解決策

目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...

React Hooks の一般的な使用シナリオ (概要)

目次1. ステートフック1. 基本的な使い方2. 更新3. 合併を実現する4. 遅延初期化状態5. ...

Webフロントエンド開発におけるエラーを見つけるための基本的な考え方

WEB開発は主に2つのインタラクション(B/Sデータ)から構成されますブラウザ: 1html、css...

VUE を使用して Ali Iconfont ライブラリをオンラインで呼び出す方法

序文何年も前、私はサーバー側の初心者でしたが、業界の競争が激しくなるにつれて、フロントエンドの初心者...

バージョン管理ツール Rational ClearCase の紹介

Rational ClearCase は、コードやその他のソフトウェア開発資産のバージョン管理を実...

MySQLデータベースを作成し、中国語の文字をサポートする方法

まずMySQLの公式ドキュメントを見てみましょう: 5.7 {データベース | スキーマ} を作成 ...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...

テーブル設定の背景画像が100%表示されない解決策

開発中に以下の状況が発見されました。 (1) ファイルが.jspファイル拡張子で保存されている場合、...

LAMP ソースコードを使用したエンタープライズレベルのインストールチュートリアル

目次LAMPアーキテクチャ1.ランプの紹介2. WebサービスワークフローWebサーバーのリソースは...

Nginx が Apache より優れている理由

Nginx は、わずか数年で Web サーバー市場の大部分を占めるようになりました。周知のとおり、N...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

Mysql binlog ログファイルが大きすぎる場合の解決策

目次1. 関連するbinlog設定2. binlogに関する詳細設定2.1 バイナリログモードの変更...

JavaScript におけるさまざまなバイナリオブジェクトの関係の詳細な説明

目次序文さまざまなオブジェクト間の関係配列バッファ型付き配列Uint8ClampedArray文字間...