var let const区别
var | let | const | |
可否同一作用域下声明同名变量 | 可以 | 不可以 | 不可以 |
声明的变量是否会挂载到window上 | 会 | 不会 | 不会 |
声明变量是否存在变量提升 | 存在 | 不存在(变量必须声明之后才能使用) | 不存在(变量必须声明之后才能使用) |
声明的变量是否会形成块作用域 | 不会 | 会 | 会 |
声明变量之后能否更改 | 能 | 不能 | 不能 |
是否存在暂时性死区 | 不存在 | 存在 | 存在 |
1.变量提升:未声明该变量,却可以使用该未被声明的变量,提升的是声明
2.let 和 const 的作用域用法完全,但 const 声明的变量必须初始化,且初始化之后不能再次赋值(不可更改常量原始值,但可更改常量对象的属性和常量数组的元素)