目标:
- 能够知道解析器运行JS分为哪些步骤?
- 能够说出变量提升的步骤和运行过程
- 能够说出函数提升的步骤和运行过程
1. 预解析
1. js预解析 分为两步: 预解析 , 执行代码 ;
- 预解析: js 引擎会把js里面所有的var 和 function 提升到当前作用域的最前面.
-
2. 预解析分为: 变量预解析(变量提升) 和 函数预解析(函数提升).
变量提升: 就是把所有的变量声明提升到当前的作用域最前面 , 不提升赋值操作.
- 函数提升: 就是把所有的函数声明提升到当前作用域的最前面, 不调用函数. ```javascript ///案例一 var num = 10; fun(); function fun(){ console.log (num); var num = 20; }//按照预解析顺序,有变量先提升变量,再提升function(函数变量),接着按照正常上下顺序排序排印或输出; / ————————————————————————-/ //案例二 var num = 10; function fun(){ console.log (num); var num = 20; console.log (num); } fun(); / ————————————————————————-/ //案例三 var a = 18; fun(); function fun(){ var b = 9; console.log (a); console.log (b); var a = ‘123’; } / ————————————————————————-/ //案例四 fun(); console.log (a); console.log (b); console.log (c); function fun(){ var a = b = c = 9; console.log (a); console.log (b); console.log (c); } //
```