ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の匿名関数とアロー関数を詳しく見る

JavaScript の匿名関数とアロー関数を詳しく見る

PHPz
PHPzオリジナル
2023-11-03 18:05:061530ブラウズ

JavaScript の匿名関数とアロー関数を詳しく見る

JavaScript では、関数は第一級市民であり、変数と同じように渡し、保存、呼び出しができることを意味します。匿名関数とアロー関数は、JavaScript でよく使用される 2 つの関数形式です。

匿名関数は名前のない関数であり、通常は関数式を通じて宣言されます。これは宣言時に作成されますが、宣言の場所でのみ使用できます。匿名関数は、関数パラメーターとして直接渡すことも、呼び出し可能な変数として保存することもできます。

たとえば、次の匿名関数を使用して即時実行関数を作成できます:

(function () {
  console.log('立即执行函数。');
})();

(function () {})() コード内のanonymous メッセージを出力するコード ブロックを含む関数。これは、即時実行関数を作成するために使用されます。つまり、宣言後すぐに実行されます。この関数はグローバル名を必要としないため、匿名関数として宣言できます。

匿名関数と比較すると、アロー関数は ES6 の新機能です。アロー関数は関数を宣言する簡単な方法で、=> 記号を使用してパラメータ リストと関数本体を接続します。アロー関数は式の値を直接返すことができます。

次は、アロー関数を使用してメッセージを出力する方法を示す簡単な例です:

const printMessage = message => console.log(`信息为: ${message}`);
printMessage('Hello World!');

const printMessage = message => console.log(The情報は次のとおりです: ${message}); は、パラメータ message を受け取り、このパラメータをコンソールに出力するアロー関数を表します。次に、このアロー関数を変数 printMessage に保存し、それを使用してメッセージを出力します。

もう 1 つの違いは、アロー関数では、this のスコープが、その関数が実行されるコンテキストではなく、その関数が定義されているコンテキストであることです。このため、アロー関数を使用する場合、一部の特殊なケース (動的バインディング コンテキストが必要な場合など) では、this が期待どおりに動作しません。この場合、匿名関数を使用する方が便利な場合があります。

これは、オブジェクト リテラルでアロー関数を使用すると、this のコンテキストが正しくなくなる典型的な例です:

const person = {
  name: 'John Doe',
  getName: () => {
    console.log(this.name); // undefined
  }
};
person.getName();

ここでは、プロパティ ## を含むオブジェクトを定義します。 #name とメソッド getNamegetName メソッドは、this.name の値を出力しようとするアロー関数です。ただし、アロー関数は、それを含む関数が定義されているコンテキストを使用するため、this.name の値は unknown です。この場合、匿名関数を使用する方が良いでしょう。

これも同じ例です。今回はアロー関数の代わりに匿名関数を使用します。

const person = {
  name: 'John Doe',
  getName: function () {
    console.log(this.name); // John Doe
  }
};
person.getName();

ここでは、アロー関数を匿名関数に変換するだけです。この関数は通常の関数コンテキストを使用するため、

this.name の値は正しい値です。

一般に、匿名関数とアロー関数は JavaScript でよく使用される 2 つの関数形式ですが、異なる特性があります。関数を使用する場合は、実際の状況に応じて適切な関数形式を選択する必要があります。

以上がJavaScript の匿名関数とアロー関数を詳しく見るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。