【发布时间】:2017-01-12 11:55:41
【问题描述】:
我在玩,发现了有趣的东西
var x = "x";
function a (){
var x = "y";
if(1){
var x = "g";
alert(x);
}
alert(x)
}
a()
为什么会输出 "g" , "g" 代替 "g" , "y" ? if 创建了另一个块作用域,x 是其中的局部变量,这意味着当我离开 if 块时,应该打印外部 x(等于 "y")。
【问题讨论】:
-
请用谷歌搜索。这已经回答了很多次了。同样对于块范围,使用
let。用var声明的变量被提升 -
JS 没有块作用域。它具有功能范围。
标签: javascript scope