我执行这样的功能:
var a = 123;
function f() {
alert(a);
var a = 9;
}
f();
结果是undefined
,为什么会这样?为什么不是123
?
我执行这样的功能:
var a = 123;
function f() {
alert(a);
var a = 9;
}
f();
结果是undefined
,为什么会这样?为什么不是123
?
您的函数实际上编译为:
function f() {
var a;
alert(a);
a = 9;
}
因为变量提升:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/var#var_hoisting
因此,您的函数重新声明a
为局部变量,其值为undefined
, alert
s 它,然后将其值重新设置为9
。
在 的时候alert
,它的价值是undefined
因为吊装。
如果您a
再次在函数语法中声明,它将成为一个新变量。如果您想使用之前的值 123,那么您不应该包含该var a = 9
语句,因为它会创建一个新变量。这个可以详细解释一下:
JavaScript中变量的作用域是什么?