为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Qyouu 2019-06-18 16:59:29
惊讶于全局变量在JavaScript中有未定义的值今天,当我看到一个全局变量undefined价值在某些情况下。例子:var value = 10;function test() {     //A     console.log(value);     var value = 20;     //B     console.log(value);}test();给出输出undefined20这里,为什么JavaScript引擎将全局值考虑为undefined..我知道JavaScript是一种解释语言。它如何能够考虑函数中的变量?这是JavaScript引擎的缺陷吗?
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-06-18
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

JavaScript中的变量始终具有函数范围。即使它们是在函数的中间定义的,它们以前也是可见的。功能提升也可观察到类似的现象。

话虽如此,第一个console.log(value)看到value变量(外部阴影的内部变量)value),但尚未初始化。您可以这样想,就好像所有变量声明都隐式地移到了函数的开头((内部-大多数代码块),而定义则留在相同的位置。

另见


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 702 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信