gpt4 book ai didi

javascript - 了解 JavaScript 函数作用域

转载 作者:可可西里 更新时间:2023-11-01 02:32:16 24 4
gpt4 key购买 nike

下面的代码是 JavaScript 代码。我正在尝试理解 JavaScript 中的函数作用域并关注 here 上的文章.我正在重现下面的代码 -

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 block ,然后在最后一条语句中提醒 cow,我会看到字符串“glue”被提醒。

当调用 f(2) 时,没有输入 if 代码块并且其中的任何内容都没有执行,那么为什么我会看到不同的结果?即为什么最后一条语句中的 alerting cow 现在返回字符串“purple”?

最佳答案

函数内的变量声明总是被提升到顶部。所以你的代码实际上是:

var f = function (x) {
var cow, r;
r = 0;
cow = "glue";
if (x > 3) {
cow = 1; // a local variable
r = 7;
}
return r;
};

在您始终分配给本地 cow 的函数中,从不分配给全局。

关于javascript - 了解 JavaScript 函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com