全局变量?为什么?看到一段代码。疑问在注释里JScript codeif (true) {var a 1}alert(a)//为什么这里的a
全局变量?为什么?
看到一段代码。疑问在注释里
- JScript code
if (true) { var a = 1;}alert(a);//为什么这里的a是1?上面定义的a不是大括号里的局部变量吗?[解决办法]
a的作用域在if之外的函数体全部范围内。像 C++ 这样的语言有“块范围”,任何一对“{}”都定义新的范围。但JScript不支持块范围。如果写成:
- JScript code
<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); 