2016-10-27 13 views
-1

各jsファイルをIIFEでカプセル化することは可能ですか?例えば各jsファイルをIIFEでカプセル化することは可能ですか?

は、ファイル内のsomefile.jsの代わり:

var x = ... 
var y = ... 
function foo() {...} 
... 

作るために:

(function() { 
var x = ... 
var y = ... 
function foo() {...} 
... 
}()); 

とJSファイルのすべてと同じことを行います。これにより、関数やグローバル変数がユーザーから隠され、簡単に呼び出したり変更したりすることができなくなります。

+1

ファイル間でグローバル変数を共有する必要がない限り、問題ありません。 –

+3

もちろん、そうでないと思う理由はありますか?もちろん、あなたのJSファイルをお互いに話してもらいたいのであれば、それは動作しません。しかしその場合、私はモジュールローダーを提案します。 – Keith

+0

これは実際には良い習慣です。これは、あなたの変数が他のグローバル変数と衝突しないようにします。 JSはリンカーを持っていないので、すべてのjsファイルはグローバルスコープにスローされるので、IFFEを使用してカプセル化するのがよい方法です – aliasav

答えて

1

各jsファイルをIIFEでカプセル化することは可能ですか?

はい、まったく受け入れられます。

しかし、通常、jsファイルのいくつかの関数を別の場所から呼び出したいので、あまり役に立ちません。

これにより、関数やグローバル変数がユーザーから隠され、ユーザーが簡単に呼び出したり変更したりすることができなくなります。

いいえ、ユーザーからの何かを隠すことは無駄です。

IIFEの目的は、ファイルのローカル変数を互いに非表示にすること、つまりjsモジュールを分離することです。

関連する問題