块作用域开始到let,const声明语句之间的区域,称为暂时性死区,变量/常量不能被访问,这符合了常规“先定义后使用”。
var不存在暂时性死区,会有变量提升,没初始化前是undefined,可以访问(函数作用域)。
var 声明的全局变量定义在globalThis(浏览器是window)对象下(但不能用delete操作符删除),let/const声明的全局变量常量无法使用globalThis访问(不属于全局对象属性)
非严格模式下,在任何地方直接给未定义的变量赋值会自动创建一个全局对象下的属性(全局变量)(delete可删除)