var a =111;
console.log(window.a);//111let b =222;
console.log(window.b);//undefinedconst c =333;
console.log(window.c);//undefined
var声明的变量存在变量提升,let和const不存在变量提升
console.log(a);//undefinedvar a =111;
console.log(b);//errorlet b =222;
console.log(c);//errorconst c =333;
let和const声明形成块作用域
if(1){var a =111;let b =222;const c =333;}
console.log(a);//111
console.log(b);//error
console.log(c);//error
同一作用域下let和const不能声明同名变量,var可以声明同名变量
var a =111;
console.log(a);//111var a =1111;
console.log(a);//1111const b =222;
console.log(b);//errorconst b =2222;
console.log(b);//errorlet c =333;
console.log(c);//errorlet c =3333;
console.log(c);//error