ホームページ >ウェブフロントエンド >jsチュートリアル >匿名の JavaScript 関数を、定義されているのと同じ行で呼び出すのはなぜですか?

匿名の JavaScript 関数を、定義されているのと同じ行で呼び出すのはなぜですか?

DDD
DDDオリジナル
2024-12-10 01:45:13495ブラウズ

Why Do We Invoke Anonymous JavaScript Functions on the Same Line They're Defined?

同じ行での匿名関数の呼び出し: それが重要な理由

クロージャのコンテキストでは、匿名関数は同じ行で呼び出されることがよくあります定義されているとおりです。この実践により、基礎となるメカニズムとその背後にある理由について疑問が生じます。

JavaScript では、3 つのメソッドを使用して関数を定義できます。まず、Function コンストラクターは new キーワードを使用して関数を作成します。次に、関数宣言では function キーワードと関数名を使用します。最後に、関数式は、名前を指定せずに関数を変数に割り当てます。

提供されたコードでは、関数式を使用して匿名関数が定義されています。

(function(msg){alert(msg)})('SO');

ただし、関数定義が削除されると、コードは失敗します:

(function (msg){alert(msg)})
('SO');

これは、セミコロンがないと、コードが 2 つの別個のものとして解釈されるためです。ステートメント:

  1. 匿名関数宣言。
  2. その関数の呼び出し。

関数は以前に定義されていないため、これは意味的に正しくありません。それは呼ばれます。このエラーを回避するには、セミコロンが存在する必要があります。

または、次のように関数式を定義して呼び出すこともできます。

var myFunc = function(msg){alert(msg);}
myFunc('SO');

この場合、関数は変数に割り当てられます。呼び出される前に。ただし、このアプローチには名前付き関数が必要ですが、これは常に望ましいとは限りません。

同じ行で匿名関数を呼び出すことにより、名前付き変数を必要とせずに関数を即時に実行できます。これは、一度だけ実行する必要があるコードをカプセル化する場合に特に便利です。さらに、名前の競合を防ぎ、コードベース内のグローバル変数の数を減らすのに役立ちます。

匿名関数と関数式の詳細については、ECMA スクリプト仕様 (セクション 13 関数定義) または次のような追加リソースを参照してください。 「jQuery と $ の質問」、または上記のコード スニペットに示されている例。

以上が匿名の JavaScript 関数を、定義されているのと同じ行で呼び出すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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