JSLintオプションがあります。実際には、グッドパーツの1つです。「即時呼び出しの前後に括弧が必要です」。つまり、
(function () {
// ...
})();
代わりに次のように書く必要があります
(function () {
// ...
}());
私の質問はこれです-なぜこの2番目のフォームがより良いと考えられるのか、誰かが説明できますか?より弾力性がありますか?エラーが発生しにくいですか?最初のフォームと比べてどのような利点がありますか?
この質問をして以来、関数の値と関数の値を明確に視覚的に区別することの重要性を理解するようになりました。即時呼び出しの結果が代入式の右辺である場合を考えます。
var someVar = (function () {
// ...
}());
最も外側の括弧は、構文的に不要であるが、左括弧が割り当てられている値であるアップフロント指示与えない機能自体ではなく、呼び出される関数の結果を。
これは、コンストラクター関数の大文字化に関するCrockfordのアドバイスに似ています。これは、ソースコードを見ている人に対する視覚的な手掛かりとして機能することを目的としています。