1.重复声明
已经存在的变量或常量,又声明了一遍 var允许重复声明,let、const不允许。
var a=1;
var a=2;
console.log(a) //2
let b=1;
let b=2; //报错
2.变量提升
let、const不存在变量提升,var有。
console.log(a);
var a=1 //a is not defined
//上端代码转换如下
var a;
console.log(a);
a=1
3.块级作用域
var没有块级作用域
for(var i=0;i<3;i++){
console.log(i) //0,1,2
}
console.log(i) //3
let、const有块级作用域
for(let i=0;i<3;i++){
console.log(i) //0,1,2
}
console.log(i) // i is not defined