gpt4 book ai didi

Javascript Shadowing - 如果您尝试使用 VAR 关键字更改已存在的全局变量,则会产生影响

转载 作者:行者123 更新时间:2023-11-28 08:48:57 24 4
gpt4 key购买 nike

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

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

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 行是做什么的? 这行内容是: 人=“尼克”;

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

我想知道的是在这两个例子中,为什么第 7 行的行为有所不同:person =“Nick”???

最佳答案

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

关于Javascript Shadowing - 如果您尝试使用 VAR 关键字更改已存在的全局变量,则会产生影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19395548/

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