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