预解析
JS 代码是由浏览器中的JavaScript 解析器来执行的。JavaScript 解析器在运行 JS 代码的时候分为两步:预解析和代码执行。
1、JS 引擎运行 JS 分为两步:预解析、代码执行
- 预解析: JS 引擎会把 JS 里面所有的 var 和 function 提升到当前作用域的最前面
- 代码执行:按照代码书写的顺序从上往下执行
2、预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
- 变量提升: 就是把所有的变量声明提升到当前作用域的最前面,不提升赋值操作
- 函数提升: 就是把所有的函数声明提升到当前作用域的最前面,不调用函数
案例:
运行结果:
9
9
9
9
9
报错
解析: var a = b = c = 9; 不等同于 var a = 9,b = 9,c =9 ;
b 和 c 直接赋值,没有 var 声明,当全局变量看