1.var声明变量会挂载在widow上,而let和const声明的变量不会
var a = 10;
console.log(window.a);//10
let b = 11;
console.log(window.b);//undefined
const c = 12;
console.log(window.c);//undefined
2.var声明的变量存在变量提升,let和const不存在变量提升
console.log(a);//undefined
var a = 1;
console.log(b);//报错
let b = 1;
console.log(c);//报错
const c = 1;
3.let和const声明形成块作用域
if(1){
var a = 1;
let b = 2;
const c = 3;
}
console.log(a);//1
console.log(b);//报错
console.log(c);//报错
4.同一作用域下let和const不能声明同名变量,var可以声明同名变量
var a = 10;
console.log(a);//10
var a = 100;
console.log(a);//100
const b = 11;
console.log(b);//报错
const b = 22;
console.log(b);//报错
let c = 33;
console.log(c);//报错
let c = 44;
console.log(c);//报错
5.const一旦声明变量必须赋值,不能使用NULL站位,声明之后不能再修改,如果声明的是复合类型数据,可以修改其属性