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

以下代码不是很理解

以下代码不是很理解

慕工程0101907 2019-08-11 14:27:59
functionfn(){vara=10;console.log(b)varb=20}fn()为什么以上代码输入undefined,把varb换成letb就报错
查看完整描述

2 回答

?
海绵宝宝撒

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

用var声明变量的时候,会有变量声明提升的效果,也就是实际上变量b在函数内顶部已经被声明,但此时还没有被赋值,所以是undefined;用let声明变量的时候,不具有变量声明提升的效果,所以报错了。
                            
查看完整回答
反对 回复 2019-08-11
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

js中var会使变量提升,也就是会跑到最前面,如果是在函数里面,就跑到函数最前面(示例a旁边),就相当于比示例console.log先了定义,所以能输出。而换成let则不会提升,在哪个位置定义就在哪个位置,所以会输出未定义
                            
查看完整回答
反对 回复 2019-08-11
  • 2 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号