gpt4 book ai didi

javascript - 全局变量未定义 - 范围问题

转载 作者:行者123 更新时间:2023-12-02 15:47:30 26 4
gpt4 key购买 nike

运行以下代码时,我希望函数末尾的警报使用“a”(1) 的全局定义变量值,但它却返回未定义。如果 if block 中的代码从未运行,为什么变量“a”返回未定义?

var a = 1;
four();

function four() {
if (false) {
var a = 4;
}

alert(a); //alerts undefined
}

JavaScript 解析器在条件表达式范围内“查看”变量声明的方式是否与在条件表达式范围之外“查看”变量声明的方式相同?

最佳答案

由于变量声明被“提升”到其作用域的顶部,因此第二个 var a 被设置在函数作用域内。所以本质上它变成了这样的东西:

function four() {
var a;

if (false) {
a = 4;
}

alert(a); //alerts undefined
}

如果您要删除 four 函数中的第二个赋值,您将警告 window.a 变量,而不是 four.a一个。

即:

var a = 1;

function four() {
if (false) {
a = 4;
}

alert(a); //alerts 1
}

关于javascript - 全局变量未定义 - 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079836/

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