惊讶于全局变量在JavaScript中有未定义的值

惊讶于全局变量在JavaScript中有未定义的值

今天,当我看到一个全局变量undefined价值在某些情况下。

例子:

var value = 10;function test() {
    //A
    console.log(value);
    var value = 20;

    //B
    console.log(value);}test();

给出输出

undefined20

这里,为什么JavaScript引擎将全局值考虑为undefined..我知道JavaScript是一种解释语言。它如何能够考虑函数中的变量?

这是JavaScript引擎的缺陷吗?


Qyouu
浏览 703回答 3
3回答

幕布斯7119047

我对这里的问题得到解释感到有些失望,但没有人提出解决办法。如果要访问函数作用域中的全局变量,而不首先创建未定义的本地变量,请将变量引用为window.varName

慕虎7371278

JavaScript中的变量始终具有函数范围。即使它们是在函数的中间定义的,它们以前也是可见的。功能提升也可观察到类似的现象。话虽如此,第一个console.log(value)看到value变量(外部阴影的内部变量)value),但尚未初始化。您可以这样想,就好像所有变量声明都隐式地移到了函数的开头(不(内部-大多数代码块),而定义则留在相同的位置。另见JavaScript函数的作用域和提升函数开头的JavaScript变量声明
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript