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

将 javascript 与全局变量一起提升

将 javascript 与全局变量一起提升

蓝山帝景 2021-12-02 16:02:51
下面的代码给出了输出undefined。我的印象是所有变量和函数声明都被提升到其作用域的顶部,因此b现在应该在调用a(). 但是,我仍然得到undefined作为我的输出?a()var b = 5;function a() {  console.log(b)}
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

你误解了提升的工作原理。它不提升分配,它只提升声明。您的代码等效于以下内容:


var b; // undefined

function a(){

 console.log(b)

}

a();

b = 5;


查看完整回答
反对 回复 2021-12-02
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

提升意味着变量将“顶部”创建- 但它不会改变值分配发生的时间,b = 5当执行到达它被写入的部分时,该部分仍然会发生。因此,如果您a()在此之前调用,b exists,但尚未分配任何值……因此,undefined


查看完整回答
反对 回复 2021-12-02
?
杨魅力

TA贡献1811条经验 获得超5个赞

是的,变量声明被提升,但值没有设置在 上b。代码看起来像这样


var b

function a(){

 console.log(b)

}

a()

b = 5;


查看完整回答
反对 回复 2021-12-02
  • 3 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

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