变量提升又称声明提前:JavaScript 引擎会在执行代码之前先进行一次预编译,把所有的 var 变量声明和函数声明提升到当前作用域的顶部。下面是一个例子:
console.log(myVar) // 输出:undefined
var myVar = 5
function myFunction() {
console.log(myVar) // 输出:undefined
var myVar = 10
console.log(myVar) // 输出:10
}
myFunction()
console.log(myVar) // 输出:5
在这个例子中,变量声明提前后等价于下面
var myVar
function myFunction() {
var myVar
console.log(myVar) // 输出:undefined
myVar = 10
console.log(myVar) // 输出:10
}
console.log(myVar) // 输出:undefined
myVar = 5
myFunction()
console.log(myVar) // 输出:5