像var这样的关键字重新初始化函数中的全局变量



如果我写这样的东西:

var a = 1;
function lol(){
console.log(a);
}
lol();

它按预期输出1,因为我在全局范围中初始化了a=1。所以我认为在函数中,它也初始化了它的值。但当我写这样的东西时:

var a = 1;
function lol(){
var a = a + a;
console.log(a);
}
lol();

它输出NaN,这让我很困惑,因为我认为变量已经在全局范围内初始化了。

以下是我的想法,不知道它是否正确,所以我想问:我认为像var/lit/const这样的关键词,每次提到它,都会重新初始化变量,或者什么?由于第二个var在块范围内,因此当与var一起提及时,变量a再次初始化,因此变为未定义,输出NaN。

我说得对吗?请帮忙。

初始化变量,然后只使用相同的变量

var a = 1;
function lol(){
a = a + a;
console.log(a);
}
lol();

在语句var a = a + a;中,您定义了完全不同的变量,这些变量在算术运算之前没有初始化,因此NaN编译器声明了另一个同名的变量a

可能是因为吊装的缘故。请参阅https://developer.mozilla.org/en-US/docs/Glossary/Hoisting#var_hoisting

根据MDN、

JavaScript提升是指在执行代码之前,解释器将函数、变量或类的声明移动到其作用域的顶部的过程。

相关内容

  • 没有找到相关文章

最新更新