4.2 js没有块级作用域

Posted 一脚一个坑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.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,则变量会被自动添加到全局环境中。

以上是关于4.2 js没有块级作用域的主要内容,如果未能解决你的问题,请参考以下文章

4.2 js没有块级作用域

javascript中的作用域

什么是块级作用域,为什么说js没有块级作用域

JavaScript全局作用域函数作用域和块级作用域的区别

JavaScript学习笔记

js没有块级作用域