4.2 js没有块级成效域

JavaScript没有块级作用域。在别的语言上,比如C语言中,有花括号封闭的代码块都有友好的成效域,(若是用ECMAScript的话来讲,就是他俩本身的施行环境),由此辅助按照规则来定义变量。例如,上面的代码效果

if (true) {

var color  = “blue”;

}

alert(color);//blue

这边是3个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,则变量会被活动添加到全局环境中。