- 作用域:使用
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);