所谓的变量提升,就是在函数中的哪个位置声明了变量,好像都被提升到函数的顶部,同时也可以在变量声明之前访问,这也不会报错。
其原因是js引擎在代码执行之前会有一个预解析的过程,初始化代码执行时所需要用到的对象, 例如
function a(){
console.log(b)
var b = 10
}
// 在预解析时
function a(){
var b
console.log(b)
b = 10
}
注意:只有使用var才有变量提升
变量提升有什么好处?
- 预编译过程的声明提升可以提高性能,可以让函数预先的为变量分配空间
- 声明提升可以提高js代码的容错,一些不规范的代码也可以正常运行