变量提升
简单理解: 使用一个没有定义的变量浏览是会报错的, 但是在变量声明之前使用变量是不会报错的. 这里就是因为变量提升机制.
注: 变量提升只会提升变量名的声明, 而不会提升变量的赋值初始化. 即在声明之前使用变量得到的是 undefined
函数声明提前
简单理解: 我们可以在函数声明之前去调用函数
注: 函数的声明提前相当于将整个函数的声明初始化提前了 (仅针对使用 function 声明的函数, 使用 var fn = function(){} 这种方式声明的函数,仅获得变量提升, 在声明之前是无法调用函数的)
注: 函数提升的优先级大于变量提升的优先级, 即函数提升在变量提升之上
例子1(变量提升))
1 | console.log(a) |
例子2(函数声明提前)
1 | fn() |
1 | fn() |
例子3(面试题)
1 | console.log(a) |