gpt4 book ai didi

javascript - 重新声明 JavaScript 变量

转载 作者:数据小太阳 更新时间:2023-10-29 04:53:37 24 4
gpt4 key购买 nike

在下面的代码中:

var greeting = "hi";

function changeGreeting() {
if (greeting == "hi") {
var greeting = "hello";
}

alert(greeting);
}

changeGreeting();​

...greeting 未定义。但是,如果我删除 var 并将 changeGreeting() 更改为:

function changeGreeting() {
if (greeting == "hi") {
greeting = "hello";
}

alert(greeting);
}

...我得到了预期的“你好”。

我永远不会在我的代码中重新声明这样的变量,但为什么会发生这种情况?

最佳答案

JavaScript 变量具有函数作用域。因此,函数内部 var greeting 的存在将声明一个局部 greeting 变量,该变量在 if 中提及时将是未定义的> 条件:全局变量在函数内部不可见,被局部变量遮盖。因此,if 没有发生,hello 的赋值也没有发生,变量仍然是未定义的。

在第二个示例中,您一直在使用全局变量,它没有被局部变量遮盖(因为函数内部没有 var greeting),并且一切如您所愿。

关于javascript - 重新声明 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626094/

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