2

私はそのような 2 つのコードを見つけましたが、存在する場合、それらの違いを理解していません。

グローバル スコープの汚染を防止するコードの違いを教えてください。

初め:

(function() {
var x = 1;
// thousand of lines here
}(window));

2番:

(function() {
var x = 1; 
// thousand of lines here
})(window);

質問は些細なことかもしれませんが、何をしているのか違いがわかりません();- 説明してもらえますか?

4

1 に答える 1

4

JavaScript パーサーが行頭のfunctionトークンを読み取るとき、それは関数宣言であると想定します。

function hello() {
    return "world";
}

その後に名前が表示されない場合は、構文エラーです。括弧は、コンテキストをステートメント/宣言ではなく式にします。これは、関数リテラルが期待されることを意味します。

おもしろい事実: もちろん、式のコンテキストを強制するために括弧は必要ありません。単項演算子も機能します。

!function() {
    var x = 1;
}();

ああ、あなたは行って質問を変えました。5 + (4 * 3)新しい答えは次のとおりです。それらはどちらもまったく同じで、対のようなもの(5 + 4 * 3)ですが、多かれ少なかれ同じように読みやすいため、重要性はさらに低くなります。

于 2013-09-30T17:53:49.123 に答える