var
1.var 语句用于声明变量。
2.变量声明后,变量为空 (没有值)。
const
1.const 声明一个只读的常量,一旦声明,常量的值就不能改变。
2.声明必须赋初始值
3.标识符一般为大写
4.只能声明一次
5.块级作用域
注:对象和数组修改不会触发const错误
let
1.let只能在代码块内有效。
2.let 只能声明一次 var 可以声明多次:
3.不存在变量提升
4.不影响作用域
注:通常与循环一起使用
总结及区别
(1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题:
内层变量可能覆盖外层变量
用来计数的循环变量泄露为全局变量
(2)变量提升: var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。
(3)重复声明: var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。const和let不允许重复声明变量。
(4)暂时性死区: 在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。
(5)初始值设置: 在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。