let
let 声明用于声明可重新赋值的块级作用域局部变量,并且可以将每个变量初始化为一个值(可选)。
具有块级作用域,只在声明它的块或子块中有效。
不存在变量提升现象,必须在使用前声明。
有暂时性死区,即在let变量声明之前的代码块中不能访问该变量。
不允许在同一作用域内重复声明。
var
var 语句 用于声明一个函数范围或全局范围的变量,并可将其初始化为一个值(可选)。
作用域是整个函数或者全局环境。
存在变量提升现象,即在声明之前就可以访问该变量。
在全局作用域中声明的变量会成为全局对象的属性。
允许重复声明,后续声明会覆盖先前的声明。
const
常量是块级范围的,非常类似用 let 语句定义的变量。但常量的值是无法(通过重新赋值)改变的,也不能被重新声明。
必须声明时进行初始化,且之后不能更改其值。
具有块级作用域,与let相同。
不存在变量提升现象,与let一样。
不允许重复声明,一旦声明后,其值就不能被重新赋值。