变量提升是var这个关键字的一个特性
但是它提升的只是申明,并不是赋值
例如:
console.log(a)
let a = 1;
他是会报错的,因为let没有变量提升的特性。console的时候,他没有找到a这个变量。所以他会报错
现在换成var
console.log(a)
var a= 1
他不会报错,但是会打印出undefined
翻译一下,上面的var,等同于下面这一段
let a ;
console.log(a)
a = 1
总结,所以说var的变量提升特性,只是声明这一步提前了,赋值这一步明没有提前。这是js解析器所做的var的‘变量声明提升’的特性
后面我还会介绍函数声明和函数表达式,以及函数的声明提升