JavaScript - var和let的区别

294 阅读1分钟

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。