しかし、グローバルな観点から見ると、同じ名前の変数、複数の関数がグローバル変数を共有した後の値の変換など、制御が難しい状況がいくつか発生します。したがって、場合によっては、単純なグローバル変数については、別の方法で処理できます。自己実行関数クロージャ メソッドを使用して解決します。
例: Web ページが読み込まれるときにそれを指定したいとします。 Web ページを閉じるときに別のプロンプトを表示するプロンプト
次のコードは上記の関数を実装します
var msg1 = "ようこそ!"; // グローバル変数を定義します
var msg2 = "さようなら!" // 別のグローバル変数を定義します
window.onload = function( ) {
アラート(msg1);
}
window.onunload = function() {
アラート(msg2);
this 2 つのグローバル変数コードスニペットで使用されています。単純な機能を実装するだけです。
さらに、グローバル変数が多すぎます。覚えておく必要があります。msg1 はウェルカム時の変数、msg2 は閉じる時の変数です...さらに変数がある場合でも、それらを覚えておくことができますか?
次は同じ関数ですが、自己実行関数クロージャ メソッドを使用しています:
(function() {
var msg = "Hello, world!";
window.onload = function() {
alert (msg);
}
})();
(function() {
var msg = "Hello, world!";
window.onunload = function() {
alert(msg);
}
})();
後者のアプローチではコードが大きくなりますが、
1) msg変数は、関数内のそれぞれの Valid でのみ実行されます。他のグローバル変数と混同することはありません。
2) コードの構造が明確になります。
3) 多数のグローバル変数が使用される状況を解決します。
上記はあくまで私の個人的な理解ですので、本物の専門家からコメントをいただければ幸いです。