日期:2014-05-16 浏览次数:20324 次
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);