ECMAScript4.2 js没有块级作用域

JavaScript没有块级作用域。在另外语言及,比如C语言中,有花括号封闭的代码块都有温馨之作用域,(如果因此ECMAScript的语来讲,就是他俩友善之行环境),因而支持因规则来定义变量。例如,下面的代码效果

if (true) {

var color  = “blue”;

}

alert(color);//blue

这里是一个if语句中定义了一个变量color,如果是当C,C++或者Java中,color会在if执行后叫灭绝。但是于JavaScript中,if语句中之变量声明会将变量添加至眼前之执行环境(这里是大局环境)中。在使for语句时尤其要牢记这距离。例如

for (var i =0; i < 10; i++) {

doSomething(i);

}

alert(i); // 10

于发生块级作用域的言语来说,for语句初始化变量的表达式所定义之变量,只见面满怀在于循环的条件受到。而对此JavaScript来说,for语句创建的变量i即使以for循环执行完毕之后,依旧有于循环外部的实行环境里。 

1.宣称变量

   
使用var声明变量会活动为填补加至近年来的环境间。在函数内部,最接近的环境就是是函数的一部分环境;如果没有以var,则变量会为活动添加到全局环境受到。