4.2 js没有块级做用域

JavaScript没有块级做用域。在其余语言上,好比C语言中,有花括号封闭的代码块都有本身的做用域,(若是用ECMAScript的话来说,就是他们本身的执行环境),于是支持根据条件来定义变量。例如,下面的代码效果函数

if (true) {ip

var color  = "blue";作用域

}for循环

alert(color);//blue变量

这里是一个if语句中定义了一个变量color,若是是在C,C++或者Java中,color会在if执行后被销毁。可是在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境(这里是全局环境)中。在使用for语句时尤为要牢记这个差别。例如循环

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

doSomething(i);co

}

alert(i); // 10

对于有块级做用域的语言来讲,for语句初始化变量的表达式所定义的变量,只会存在于循环的环境中。而对于JavaScript来讲,for语句建立的变量i即便在for循环执行结束以后,依旧存在于循环外部的执行环境之中。 

1.声明变量

    使用var声明变量会自动被添加到最近的环境之中。在函数内部,最接近的环境就是函数的局部环境;若是没有使用var,则变量会被自动添加到全局环境中。

相关文章
相关标签/搜索