一、var声明的变量会挂载在window上,而let和const声明的变量不会:
var a = 100;
console.log(a,window.a);
let b = 10;
console.log(b,window.b);
const c = 1;
console.log(c,window.c);
二、var声明变量存在变量提升,let和const不存在变量提升
console.log(a);
var a = 100;
console.log(b);
let b = 10;
console.log(c);
const c = 10;
三、let和const声明形成块作用域
if(1){
var a = 100;
let b = 10;
}
console.log(a);
console.log(b)
if(1){
var a = 100;
const c = 1;
}
console.log(a);
console.log(c)
四、同一作用域下let和const不能声明同名变量,而var可以
var a = 100;
console.log(a);
var a = 10;
console.log(a);
let a = 100;
let a = 10;
五、暂存死区
var a = 100;
if(1){
a = 10;
let a = 1;
}
六、const
const a = 100;
const list = [];
list[0] = 10;
console.log(list);
const obj = {a:100};
obj.name = 'apple';
obj.a = 10000;
console.log(obj);