Var是ES5提出的,let和const是ES6提出的
在了解 var、let、const三者的区别 之前,我们需要明白一个东西: 作用域。
在 ES5,JavaScript 只有两种作用域:全局作用域,函数作用域。
ES6新增了块级作用域, 块作用域由 { } 包括,if语句和 for语句里面的{ }也属于块作用域。
- Var 声明的变量会挂载在 window 上,而 let 和 const 声明的变量不会
- Var 声明的变量存在变量提升,let 和 const 不存在变量提升
- 同一作用域下 var 可以声明同名变量,let 和 const不可以
- Let 和 const 声明会形成块级作用域
- Let 暂存死区
- Const 一旦声明必须赋值,不能用 null 占位,声明后不能再修改,如果声明的是复合类型数据,可以修改属性