什么是变量提升
- 所有的声明都会提升到作用域的最顶上去。
- 一个变量可以先使用再声明
注意的是,函数的优先级高于变量的优先级。
例子
变量的提升
1 | num = 1; |
函数的提升
1 | test() |
函数优先级高于变量优先级
1 | func(); // 1 |
但是如果变量没有提升,结果会完全不同
1 | var func; |
(Noticed)JavaScript only hoists declarations, not initializations. If a variable is declared and initialized after using it, the value will be undefined. For example:
1 | console.log(num); // Returns undefined |
But
1 | num = 6; |
牢记这三点:
- 只有声明本身会被提升,而赋值操作不会被提升。
- 变量会提升到其所在函数的最上面,而不是整个程序的最上面。
- 函数声明会被提升,但函数表达式不会被提升。