什么是变量提升
JavaScript 中,变量的声明都将被提升到函数的最顶部。也就是说变量可以先使用再声明。简单的说将var的变量声明提到函数最上面,不能将变量的值和变量的引用提升到函数最上面。如下图所示:
图1函数输出结果为undefined和1说明a在第一个console的时候就已经被定义了,但是没有给a赋值。不然的话会报错。图1的等价代码如图2
下面也是关于变量提升的例子:
图4是图3的等加代码。图一的代码不容易理解,建议在函数开始时对所有局域变量进行定义,不建议在ES6中使用var定义变量使用变量提升。
什么是函数提升
由图5可知函数也有提升这个概念,这时候应该有一个疑问,在函数内是定义变量在最前面还是函数在最前面?函数再最前面。当变量名与函数名重复时,函数的优先级更高。如图6