我只是显示警报中的值,但我a
不确定是为什么?我将解释问题:
首先,我使用false
参数调用函数,并使用来显示警报a = 1;
。但是当我true
作为参数传递时,它首先显示警报2
(如预期的那样是本地的),但是何时再次显示2
?第三说一个是undefined
?
function ab(p){
a = 1;
if(p){
var a = 2
alert(a)
}
alert(a)
}
ab(false);
alert(a);
出乎意料的结果是什么时候ab(true)
?
这就是所谓的可变吊装。实际上,您认为是全局变量的变量将在该函数内部悬挂,并将变为局部变量。
编译器会这样考虑您的代码,
function ab(p){
var a; //will be hoisted here.
a=1;
if(p){
a=2;
alert(a);
}
alert(a);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句