声明提升
声明提升/预解释是什么?
声明从它们在代码中出现的位置被“移动”到了当前作用域的最上面,这个过程就叫作提升
为什么要存在提升这个事情呢?
其实提升存在的根本原因就是为了解决函数间互相调用的情况
造成变量声明提升的本质原因?
引擎会在解释javascript代码之前首先对其进行编译。编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将他们关联起来。
声明提升的规则是什么?
- 变量的重复声明无用
- 函数声明提升优先于变量声明提升
- 同名的var声明和函数,var 声明会被忽略掉
- 后面的函数声明会覆盖前面的函数声明