猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
下面的这行代码如何理解好?
functionfn(){vara=10;console.log(b)varb=20}fn()为什么以上代码输入undefined,把varb换成letb就报错
长风秋雁
浏览 229
回答 2
2回答
冉冉说
用var声明变量的时候,会有变量声明提升的效果,也就是实际上变量b在函数内顶部已经被声明,但此时还没有被赋值,所以是undefined;用let声明变量的时候,不具有变量声明提升的效果,所以报错了。
0
0
0
Helenr
js中var会使变量提升,也就是会跑到最前面,如果是在函数里面,就跑到函数最前面(示例a旁边),就相当于比示例console.log先了定义,所以能输出。而换成let则不会提升,在哪个位置定义就在哪个位置,所以会输出未定义
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续