下面的代码是 JavaScript 代码。我正在尝试了解 JavaScript 中的函数范围,并在此处关注文章。我正在复制下面的代码 -
var cow = "purple"; // just a random cow
var f = function (x) {
var r = 0;
cow = "glue";
if (x > 3) {
var cow = 1; // a local variable
r = 7;
}
return r;
};
var z = f(2);
alert(cow); // returns purple
我不太明白为什么会提示字符串“purple”。该行cow = "glue";
应该将 cow 变量的值设置为“glue”。如果我删除 if 块,然后在最后一个语句中警告 cow,我会看到字符串“glue”被警告。
调用 f(2) 时,没有输入 if 代码块,也没有执行其中的任何内容,那么为什么我会看到不同的结果?即为什么最后一条语句中的alerting cow 现在返回字符串“purple”?