1. 我们 js 引擎运行 js 分为两步: 预解析 代码执行
(1) 预解析 js 引擎会把 js 里面所有的 var 还有function 提升到当前作用域的最前面
(2) 代码执行 按照代码书写的顺序从上往下执行
2. 预解析分为 变量预解析(变量提升) 和函数预解析(函数提升)
(1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
(2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
示例:
(1)
这两行代码就相当于 以下代码 (只声明不赋值,结果是 undefined)
(2)
相当于执行了以下代码(这里用的是匿名函数,fun 相当于一个变量)
(3)
相当于执行了以下代码