8

次のように、常に JavaScript コードの先頭にセミコロンを挿入することをお勧めします。

;(function(){

})();

ただし、jQuery、Backbone など、多くの一般的な JavaScript ライブラリ/フレームワークはこれを使用しません。

先頭のセミコロンは、悪いコードが縮小/圧縮されたコードを壊すのを防ぐことになっていると思います.しかし、なぜ誰もそれを使用していないのですか?

冒頭のセミコロンがなぜか駄目になった?

4

2 に答える 2

8

より一般的な方法は、ファイルの最後にセミコロンを追加することです。問題は、次のように 2 つのファイルを連結する場合です。

// file1.js
(function() {
})()

// file2.js
(function() {
})()

の最後にセミコロンを置かないと、関数 in でfile1関数 in からの戻り値を呼び出そうとします。各ファイルの最後にセミコロンを配置すると、これが解決されます (最初にセミコロンを配置する場合と同様)。file1file2

もう 1 つの方法は、関数呼び出しを次のようなステートメントに変換することです。

!function() {
}();

これは JSLint でも推奨されていると思います。この場合、セミコロンを気にする必要がないからです (とにかくセミコロンを使用する必要がありますが、それはまったく別の議論です ;)。

于 2013-02-22T14:56:28.247 に答える
3

理想的には、複数のファイルを縮小してマージしても、コーディング スタイルに影響を与えるべきではありません。必要に応じてプログラムを作成し、自動ツールを使用してプロジェクトを正しくマージおよび縮小できるはずです。

これを行う自動化ツールはたくさんあります。たとえば、 UglifyJS 2を見てください。探せば、もっとたくさんのツールを見つけることができると思います。

質問に戻ると、Daff が指摘したように、すぐに呼び出される関数式の後にセミコロンを挿入することが重要です。ただし、セミコロンを前に置く理由はありません。あなたが良い子で、すべてのステートメントと表現の後にセミコロンを付ければ、何の問題もありません。

JavaScript にセミコロンの自動挿入を行わせないでください。

セミコロンを入れなくてよい唯一の場所は、関数宣言の後です。

function foo() {} // it's alright to not put a semicolon here

ただし、関数式を使用している場合は、常にセミコロンを入れてください。

(function foo() {})(); // you should put a semicolon here

セミコロンを他の場所に置くと混乱します。特に行の先頭。他のプログラミング経験者は、これが行末コメントの始まりだと考えるかもしれません。

于 2013-02-22T15:21:59.133 に答える