1.let和const
暂时性死区(Temporal Dead Zone)
let和const命令声明的变量吴变量提升,且都会被锁定在声明的代码块中,在let和const命令行前,使用该变量都将报错,这一部分称为”暂时性死区”.
1 | var tmp = 123; |
let tmp 将tmp变量绑定在 {}代码块之内,外部的tmp声明无效,tmp=’abc’就处在死去,所以报错。同理在以前没有let和const命令的时候,typeof是一个安全的运算符,即使变量没有被声明,也会正常返回undefined,但如果typeof处在死区中,处理了在后文被let和const的变量,将会报错。
1 | typeof undeclared_variable;//undefined 未被let和const声明反而没事 |
顶层对象
var和function的全局声明会自动绑定到window或者global对象,