gpt4 book ai didi

未初始化局部变量的javascript变量范围

转载 作者:行者123 更新时间:2023-11-30 10:07:36 24 4
gpt4 key购买 nike

我在理解两者之间的区别时遇到了问题

for (i = 0; i < 4; i++) {
var g;
if (g === undefined) {
g = 0;
} else {
g = g + i;
alert(g);
}
}

还有这个

for (i = 0; i < 4; i++) {
var g=0;
if (g === undefined) {
g = 0;
} else {
g = g + i;
alert(g);
}
}

对于第一个循环输出是 0 ,1 ,3 ,6 这表明 g 的值在整个迭代过程中没有被重置,但是如果 g 被初始化为零输出变为 0, 1, 2, 3 。这告诉我每次点击 var g=0 时,g 都设置为零。

这是否意味着如果局部变量没有被初始化,它们的行为就像全局变量一样?

最佳答案

这与变量提升和范围有关。由于 for 循环不会改变 javascript 中的范围,因此第一个代码块被 Javascript 解释为

var g;
for (i=0;i < 4;i++)
{
g=0;
if(g===undefined)
g=0;
else
g=g+i;
alert(g);

}

g 因此在循环的每次迭代中被重置,输出“0 1 2 3”。第二段代码变为

var g;
for (i=0;i < 4;i++)
{
if(g===undefined)
g=0;
else
g=g+i;
alert(g);
}

并且不会在循环的每次迭代中重置,因此输出“0 1 3 6”。

关于未初始化局部变量的javascript变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358290/

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