全局变量?为什么?
看到一段代码。疑问在注释里
if (true) { var a = 1;}alert(a);//为什么这里的a是1?上面定义的a不是大括号里的局部变量吗?<script>function func(){ if (true) { var a = 1; }}alert(a);</script>就会发现alert(a);无法正常输出a了
[解决办法]
对啊,JavaScript变量没有块范围,只要在方法中定义,无论是在switch块中还是if块中,他们的作用范围都是整个函数。而除此之外,就是全局变量了。
[解决办法]
if,for 都没有独立作用域
[解决办法]
js中虽然没有块状作用域,但是可以模仿
例如(function() {
if (true) {
var a = 1;
}
}
})();
alert(a);