什么是变量提升 ?

30 阅读1分钟

变量提升又称声明提前: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