【发布时间】:2014-07-18 15:31:10
【问题描述】:
function a(){
var h = 1;
function b(){
alert(h);
}
b();
}
a();
警报1;
function a(){
var h = 1;
function b(){
if(false){
var h = h * 2;
}
alert(h);
}
b();
}
a();
警报未定义。为什么?
【问题讨论】:
-
因为你声明了 var h 两次
-
if(false)的意思是什么? -
JS 没有块级作用域并且变量被提升。如果您不熟悉,可以考虑阅读有关吊装的内容
-
这里的关键词是“吊装”。另见stackoverflow.com/q/9389454/218196
标签: javascript