var
var可以声明前置
a= 2
var a
var a = 4
let
let 不可以声明前置
a =3
let a = 4//报错
let 不可重复声明
let a =3
let a =4//报错
let 存在块级作用域
for(let i=0;i<3;i++){
console.log(i)
}
console.log(i)//报错
const
const声明的常量不可改变
const a =1 ;
a =2 //报错
const obj = {a:1}
obj.a=2//可以 因为地址没变
obj = {a:2}//报错 修改后地址变了,所以报错