1.var是全局变量,let是局部变量
2.var没有块级作用域,let有块级作用域。
3.var有变量提升,let没有变量提升。
4.var可以重复声明,let不能重复声明。
总的来说,使用let比使用var更严谨,推荐使用。
举几个例子:
for (var i = 0; i < 5; i++) {
}
console.log(i); // 5
for (let j = 0; j < 5; j++) {
}
console.log(j); // 报错 j is not defined
var声明的i有全局作用域,所以会打印出5。
let声明的j只在for循环内可用,for循环外无法找到,所以会报错。
if(2>1) {
var a = 10;
}
console.log(a); // 10
if(2<1) {
var b = 5;
}
console.log(b); // undefined
因为a和b会进行变量提升,所以会改变要打印的值。
第一个if满足条件,a的值变为10。
第二个if不满足条件,b的值依然为undefined。
function att() {
var b = 10;
}
console.log(b); //b is not defined
因为函数里的b变量没有变量提升,有作用域限制,所以打印b是 not defined。