提升

# 提升

任何声明在 某个作用域内的变量,都将附属于这个作用域。

# 先有鸡还是先有蛋

直觉上会认为 JavaScript 代码在执行时是由上到下一行一行执行的。但实际上这并不完全 正确

# 编译器再度来袭

引擎会 在解释 JavaScript 代码之前首先对其进行编译。编译阶段中的一部分工作就是找到所有的 声明,并用合适的作用域将它们关联起来

变量和函数在内的所有声明都会在任何代码被执行前首先 被处理。

变量和函数声明从它们在代码中出现的位置被“移动” 到了最上面。这个过程就叫作提升。

换句话说,先有蛋(声明)后有鸡(赋值)。

函数声明会被提升,但是函数表达式却不会被提升。

# 函数优先

函数声明和变量声明都会被提升。

函数会首先被提升,然后才是变量。

出现在后面的函数声明还是可以覆盖前面的。

# 小结

声明本身会被提升,而包括函数表达式的赋值在内的赋值操作并不会提升。

上次更新: 2022/7/22 下午12:02:46