暂时性死区
变量提升
1.var
变量提升:提升的是变量声明
函数提升:优先级高于变量提升
声明的变量保存在window中
2.const(ES6新增)
变量一旦声明必须初始化=
变量提升但存在暂时性死区,未初始化或赋值前不允许访问(ReferenceError)
3.let(ES6新增)
变量提升但存在暂时性死区,未初始化或赋值前不允许访问(ReferenceError)
在全局作用域下使用 let
声明变量,变量并不会被挂载到 window
上(不是全局window对象的属性)
赋值三阶段:
1、创建(声明)变量,开辟内存空间
2、初始化函数,值为undefined
3、给变量赋值
var的创建和初始化过程被提升(1、2步)
let只有创建被提升但是初始化没有提升(1步)
function()创建、初始化以及赋值都被提升(1、2、3步)