什么是变量提升?

  • 作用域形成后先进行变量提升(函数是先进行形参赋值)
  • 对var和function提前声明和提前定义

关于变量提升需要注意的几点

  • 只对等号左边进行变量提升
  • 全局作用域下用var声明的变量,相当于给window设置一个属性,变量的值就是属性值,修改一方的值另一方会改变,存在映射关系。
  • 条件判断下的变量提升:当前作用域下,不管条件成立否,都进行变量提升,且var和function都只声明(老版本浏览器function会定义),执行到条件成立时形成块级作用域,第一件事是变量提升(条件里面function会先定义)。