実際、良い部分の 1 つであるJSLintオプションがあります。これは、"[requires] 即時呼び出しの周りに括弧が必要です"。
(function () {
// ...
})();
代わりに次のように書く必要があります
(function () {
// ...
}());
私の質問はこれです -- この 2 番目の形式の方が優れていると考えられる理由を説明できる人はいますか? それはより弾力性がありますか?エラーが起こりにくい?最初のフォームよりもどのような利点がありますか?
この質問をして以来、関数の値と関数の値を視覚的に明確に区別することの重要性を理解するようになりました。即時呼び出しの結果が代入式の右辺である場合を考えてみましょう。
var someVar = (function () {
// ...
}());
最も外側の括弧は構文上不要ですが、左括弧は、割り当てられる値が関数自体ではなく、呼び出された関数の結果であることを前もって示します。
これは、コンストラクター関数の大文字化に関する Crockford のアドバイスに似ています。これは、ソース コードを見ている人に視覚的な手がかりとして役立つことを意図しています。