var let const 区别
var
- var 在全局作用域定义时,还会挂载到window(浏览器环境)上,生成全局变量
- 可以重复声明,后面申明覆盖前面声明
- 存在变量提升(自动把声明提到作用域顶部),不规范写法,易导致可读性差
let
- 除了全局作用域和函数作用域外,还新增了块级作用域( { } )
- 不能重复声明
- 作用域内,声明语句前使用会报错(暂时性死区 temporal dead zone TDZ)
const
- let 基础上,规定了申明后不可修改,用于声明常量
- 声明后不可修改,必须声明时候赋值
- 如果声明的是引用类型,保存的是引用地址,所以不能重新赋值,但是可以修改引用对象内部的属性