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権威の手引き」で提出された「ブロックレベルの機能領域がない」というのは実際に上記のような意味です.