1、预解析是什么:提前解析代码
2、预解析做什么事:
(1)变量声明提前- - -提前到当前所在作用域的最上面
(2)提前函数声明- - -提前到当前所在作用域的最上面
3、注意:
(1)变量声明- - -只会提升声明,不会提升赋值
(2)函数声明- - -只会提升声明,不会提升调用
(3)函数表达式的预解析是变量提升
4、举例:
(1)
执行代码前,变量声明提前,代码执行过程如下:
所以执行结果:undefined
(2)
执行代码前,函数声明提前,代码执行过程如下:
所以执行结果:如人饮水,冷暖自知
(3)
执行代码前,变量声明、函数声明提前,代码执行过程如下:
所以执行结果:undefined,报错
(4)
执行代码前,变量声明、函数声明提前,代码执行过程如下:
所以执行结果:undefined
(5)
注意:
函数表达式的预解析,是变量提前,不是函数声明提前了,表达式有等号是赋值;
所以上面调用函数会报错,此时的f1不是函数,是作为变量声明提前;
代码执行过程如下:
执行结果:报错
(6)
代码执行过程: