1

所以,我知道声明一个没有var关键字的变量意味着它是在全局范围内声明的。

因此,在下面的第一个示例中,代码的第 4 行将全局变量person(前面没有var关键字)从“Jim”更改为“Andrew”。

var person = "Jim";

function whosGotTheFunc() {
   person = "Andrew";
}

person = "Nick";
whosGotTheFunc();
console.log(person);

在第二个示例中,代码的第 4 行创建了一个单独的局部变量,也称为person

var person = "Jim";

function whosGotTheFunc() {
   var person = "Andrew";
}

person = "Nick";
whosGotTheFunc();
console.log(person);

但是,这两个示例的第 7 行是做什么的?上面写着: person = "Nick";

Treehouse 测验询问记录到控制台的内容。在示例 #1 中,第 4 行将全局变量person更改为“Andrew”,但随后第 7 行不影响该全局变量(因此控制台记录“Andrew”)......但是,在示例 #2 中,在第 4 行创建了一个局部变量,实际上,第 7 行确实将全局变量的值从“Jim”更改为“Nick”(控制台记录“Nick”)。

我想知道的是在 2 个示例中,为什么第 7 行的行为差异:person = "Nick"???

4

1 回答 1

0

在两个示例中都修改了变量。但是,调用whosGotTheFunc()全局修改之后,因此在第一个示例中,它会覆盖“Nick”的值,将其保留为“Andrew”。

于 2013-10-16T04:58:55.997 回答