1.JS引擎运行JS分为两步

  • 预解析
  • 代码执行

(1) 预解析:JS引擎会把JS里面的所有var和function提升到当前作用域的最前面
(2) 代码执行:按照代码书写的顺序从上往下执行

2.预解析分为变量预解析(变量提升)和函数预解析(函数提升)

(1) 变量提升:就是把所有的变量声明提升到当前的作用域最前面,不提升赋值操作
(2) 函数提升:就是把所有的函数声明提升到当前的作用域最前面,不调用函数