JavaScriptでブロックスコープを実現する方法

624 ワード

例えば以下のコード
 
  
{
var temp = "12";
}
alert(temp); // 12
通常のプログラミング経験によれば、ALert関数はtemp変数にアクセスできません.他のブロックの中で、JavaScriptにはブロックスコープの概念がないので、JSには機能しません.しかし、JSプログラムを書く時、特に大きなプログラムやライブラリがあります.ネーミング衝突を防ぐために、また変数の作用領域を制御するメカニズムが必要であるので、ブロックの作用領域の概念を実現するために、ここでは一般的な方法を紹介します.コードは以下の通りです.
 
  
(function() {
var temp = "123";
})();
alert(temp);  //
上のコードのように関数式を定義してすぐに呼び出します.この形式はブロックの役割領域の概念を模倣して、ブロック内の名前空間を保護しています.
(例えばJQuery)という名前の衝突は効果的に避けられます.実はJQueryはこのような方法でブロックの役割領域を実現しています.