# JavaScript 预解析
我们 js 引擎运行 js 分为两步: 预解析 代码执行
- 预解析 js 引擎会把 js 里面所有的 var 还有 function 提升到当前作用域的最前面
- 代码执行 按照代码书写的顺序从上往下执行
预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
- 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
- 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
1 | console.log(num); // undefined 坑 1 |
# 重点
1 | f1(); |
注意其中的 var a = b = c = 9; 相当于 var a = 9; b = 9; c = 9; b 和 c 直接赋值,没有 var 声明,当作全局变量看
所以最后输出结果为 : 9 9 9 9 9 undefined
