2017-05-15 7 views
0

、グローバル名前空間の汚染を防止するのに十分なほど

$(document).ready(function() { ... }); 

内のすべての私のJSコードをラップしていますか?そうでない場合、私はそれを行うより良い方法がありますか?

+0

ここにコードをラップするのではなく、コード内のグローバル名前空間を汚染している理由を探してください。 –

答えて

3

これは良いスタートですが、関数内にグローバル変数を作成しないようにする必要があります。これを行うには、厳密なモード("use strict";)を設定する必要があります。 windowのすべての言及を確認することは、残りの部分に進みます。

DOMの準備が整うまで、コードの実行を遅らせるという副作用があります。それは常に望ましいとは限りません。代わりに単純なIIFEを使用することもできます。

1

はい、これで十分です。

JavaScriptにはメンバーを隠す機能の範囲があるため、その中に宣言された新しいメンバーはグローバルスコープから隠されます。

あなたは、関数の内部(すなわちvar variableName)ものの宣言するためにそれらを確認する必要があり、またはそれらは(グローバルでもよい)を囲む範囲に掲揚されます。

もちろん、グローバルオブジェクトに直接変数を割り当てると、それを汚染します(完全性のためにこれを言います)。

Quentinと回答しましたが、use strict;で厳密なモードを使用すると、グローバルコンテキストに添付されていない宣言されていない変数がないことが保証されます。

関連する問題