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

js声明前置时候,是变量声明先前置还是函数声明先前置?

js声明前置时候,是变量声明先前置还是函数声明先前置?

拉丁的传说 2018-10-11 14:15:01
js声明前置时候,是变量声明先前置还是函数声明先前置?怎么证明
查看完整描述

1 回答

?
桃花长相依

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

这真是个刁钻的问题,讲真这个很难讲清到底谁会先声明,个人理解js的变量和函数声明分成三个阶段:申明,初始化,赋值。申明表示代码解析的时候表明我现在这个作用域里有这个变量了,这个过程在es5里表现不明显,但是es6里的let变量的表现就表明。初始化就是对变量和函数附上初始值,最后就是赋值将用户的值附给对应的变量和函数。正常我们说的声明提前是对于var变量指的是 申明+初始化(let不一样,他有临时性死区其实际上应该也算有提前,申明这个过程提前了),而函数的声明提前指的是 申明+初始化+赋值,最重要的是解析器是将当前作用域内声明的所有变量和函数都会放到作用域的开始处,所以谁先谁后不重要,可能是先变量后函数,也可能是谁在前谁先来不按种类分,具体的可能就得看解析器到底是怎么做的了。


查看完整回答
反对 回复 2018-11-08
  • 1 回答
  • 0 关注
  • 439 浏览
慕课专栏
更多

添加回答

举报

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