JavaScriptには、ブロックレベルのスコーププログラムの例がありません.

694 ワード

	
		var i = 10;
		function a(){
			alert(i);
		}
		//a();//output:10
	
 
       
		var i = 10;
		function a(){
			var i = 2;// alert     2
			alert(i);
			//var i = 2;// alert          undefined:      
		}
		a();//output:undefined
<pre name="code" class="javascript">	
最初のscriptでは10を出力し、変数解析の過程でまず部分的な作用領域を検索し、その後上位の作用領域を検索することができます.コード1の関数に変数iが定義されていないので、上位の作用領域(グローバルスコープ)を検索して、その値を出力します.しかし、コード2の関数内で変数iが定義されており(alterの後においても前に変数が定義されても、この作用領域に変数iがあると考えられている)、上層の作用領域を検索せずに直接iが出力される.しかし、残念なことに、この時の局所変数iは割り当てられていないので、出力はundefinedです.
「JavaScript権威の手引き」で提出された「ブロックレベルの機能領域がない」というのは実際に上記のような意味です.