先用一句话总结:let和const是var的改良版,能用const就不用let, 能用let就不用var。
1、var声明的变量属于函数作用域,而let和const声明的变量属于块级作用域;
2、var声明的变量存在变量提升,而let和const没有
3、var声明的变量可以重复声明,而在同一块级作用域,let变量不能重新声明,const常量不能修改(对象的属性和方法,数组的内容可以修改)
var
1).声明提升(let没有)
console.log(num) undefined
var num =1
2).变量覆盖(let不可以)
var num1=123
var num1=34
console.log(num1) 34
const
1.const 声明之后必须赋值 否则报错
2.定义的值不能修改,否则报错
3.支持let的其他属性