3

我执行这样的功能:

var a = 123;
function f() { 
  alert(a);
  var a = 9;
} 
f();

结果是undefined,为什么会这样?为什么不是123

4

2 回答 2

9

您的函数实际上编译为:

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因为吊装。

于 2013-04-17T16:07:39.350 回答
0

如果您a再次在函数语法中声明,它将成为一个新变量。如果您想使用之前的值 123,那么您不应该包含该var a = 9语句,因为它会创建一个新变量。这个可以详细解释一下: JavaScript中变量的作用域是什么?

于 2013-04-17T16:12:26.273 回答