暂时性死区:
- 定义:
let/const
命令会使区块形成封闭的作用域。若在声明之前使用变量,就会报错。总之,在代码块内,使用let
命令声明变量之前,该变量都是不可用的。这在语法上,称为 “暂时性死区” - 现象:
console.log(a) // ReferenceError: a is not defined let a
浅谈let,const,var关于暂时性死区:
- var不存在暂时性死区,而let,const存在,所以let,const在变量声明之前就访问变量的话,会直接提示
ReferenceError
,而不像var那样使用默认值undefined
- reason:
var
声明的变量可以重复声明,没有块的概念,可以跨块访问,不能跨函数访问,当出现相同的变量名时,后者会覆盖前者
let
,const
有块级作用域(花括号内),并且不可重复声明(不存在变量提升,所以用let,const
定义的变量一定要在声明后再使用,否则会报错)