JavaScript预解析
预解析
JavaScript引擎运行时,分两步
- 预解析
JavaScript会将 var 和 function 优先解析- 变量提升
只提升变量,不提升赋值 - 函数提升
只提升声明,不调用函数
- 变量提升
- 代码执行
预解析结束后,按代码从上往下执行
函数内部变量如果没有声明,直接赋值。则为全局变量
测试1
1 | var num = 10 |
结果为:
1 | undefined |
解析:
它的执行过程是
1 | function fun() { |
测试2
1 | var num = 10 |
结果为:
1 | undefined |
解析:
它的执行过程是
1 | var = num |
测试3
1 | var a = 18 |
结果为:
1 | undefined |
解析:
它的执行过程是
1 | var a |
测试4
1 | f1() |
结果为:
1 | 9 |
解析:
它的执行结果为
1 | function f1() { |