JS变量提升
- 首先要理解JS的运行机制:先解析代码,获取所有被声明的变量,再一行一行的运行。这样造成的结果就是所有的变量的声明语句都会被提升到代码的头部,这也就是变量提升。
- 例如:
console.log(a);
var a = 1
结果会显示undefined
原因就在于上述代码被JS解析成
var a;
console.log(a);
a = 1;
此时a声明了但是没有赋值而已,所以对于var声明的变量因为存在变量提升的关系,即使先使用后声明也不会报错。
需要注意的是变量提升只对var声明的变量有效,ES6中的const,let则不存在变量提升。
例如:
console.log(a);
const a = 1;
上述代码会直接报错。