概念
首先javascript引擎的工作方式,是先解析代码,获取所有被声明的变量,然后在一行一行的运行。这造成的结果就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升。
console.log(a) //undefined
var a = 1;
function b(){
console.log(a)
}
b() //1
//执行代码顺序:
//第一步:将var a = 1; 拆分为 var a = undefined 和 a = 1
//第二步:将var a = undefined 放到最顶端, a = 1 还在原来的位置
//这样一来代码就是这样的:
var a = undefined
console.log(a) //undefined
a = 1;
function b(){
console.log(a)
}
b() //1
//第二步就是执行,因此js引擎一行一行从上往下执行,就造成的当前的结果,这就叫做变量提升。