我执行这样的功能:
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, alerts 它,然后将其值重新设置为9。
在 的时候alert,它的价值是undefined因为吊装。
如果您a再次在函数语法中声明,它将成为一个新变量。如果您想使用之前的值 123,那么您不应该包含该var a = 9语句,因为它会创建一个新变量。这个可以详细解释一下:
JavaScript中变量的作用域是什么?