JavaScript为什么要进行变量提升

253 阅读1分钟

所谓的变量提升,就是在函数中的哪个位置声明了变量,好像都被提升到函数的顶部,同时也可以在变量声明之前访问,这也不会报错。

其原因是js引擎在代码执行之前会有一个预解析的过程,初始化代码执行时所需要用到的对象, 例如

function a(){
  console.log(b)
  var b = 10
}

// 在预解析时
function a(){
  var b
  console.log(b)
  b = 10
}

注意:只有使用var才有变量提升

变量提升有什么好处?

  • 预编译过程的声明提升可以提高性能,可以让函数预先的为变量分配空间
  • 声明提升可以提高js代码的容错,一些不规范的代码也可以正常运行