1. ホーム
  2. javascript

[解決済み] 無名JavaScript関数を自動実行する際の括弧の位置は?

2022-11-21 07:06:51

質問

私は最近、現在のバージョンの json2.js と私がプロジェクトで使用していたバージョンを比較したところ、関数式が作成され、自己実行される方法の違いに気づきました。

無名関数を括弧でくくり、それを実行するコードです。

(function () {
  // code here
})();

となっていましたが、自動実行される関数を括弧で囲むようになりました。

(function () {
  // code here
}());

の受付回答には、CMSのコメントがあります。 JavaScriptのカプセル化された匿名関数の構文について説明してください。 という「両方」の (function(){})();(function(){}()); は有効です。"

と思っていたのですが、何が違うのでしょうか? 前者は、グローバルな無名関数を囲んでおくことでメモリを消費するのでしょうか? 括弧はどこにあるべきでしょうか?

どのように解決するのですか?

ほとんど同じです。

最初のものは、関数を括弧で囲んで有効な式とし、それを呼び出しています。式の結果は未定義です。

2番目は関数を実行し、自動起動の周りの括弧がそれを有効な式にします。また、評価結果はundefinedとなります。

式の結果は同じなので、"正しい"という方法はないと思います。

> function(){}()
SyntaxError: Unexpected token (
> (function(){})()
undefined
> (function(){return 'foo'})()
"foo"
> (function(){ return 'foo'}())
"foo"