编译器

    1. 在当前作用域中声明变量

    2. 生成运行时所需代码

    引擎会在解释 JavaScript 代码之前首先对其进行编译。

    编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将它们关联起来。

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