所以,我知道声明一个没有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"???