在JavaScript中,let和var是用于声明变量的关键字,它们有一些区别。

51 阅读1分钟
  • 作用域:使用var声明的变量具有函数作用域,而使用let声明的变量具有块级作用域。块级作用域是指变量只在声明它的块(例如,if语句、循环等)内部可见,而函数作用域是指变量在整个函数内部都可见。
  • 变量提升:使用var声明的变量会发生变量提升,即在变量声明之前就可以访问变量。而使用let声明的变量不会发生变量提升,只有在变量声明之后才能访问变量。
  • 重复声明:使用var声明的变量可以被重复声明,而使用let声明的变量在同一作用域内不能被重复声明。
  • 全局对象属性:使用var声明的全局变量会成为全局对象的属性,而使用let声明的全局变量不会成为全局对象的属性。

举例:

    var nickname = "Lei";
    
    setTimeout(function () {
        console.log(this.nickname); //Lei  使用var声明的全局变量会成为全局对象的属性
    }, 0);
    let nickname = "Lei";
    
    setTimeout(function () {
        console.log(this.nickname); //undefined  使用let声明的全局变量不会成为全局对象的属性
    }, 0);