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