区别:
-
作用域不同:
var是 函数作用域,变量声明会提升到函数顶部,即使在块内声明也能在块外访问。let是 块作用域,只在当前块{}内有效,块外无法访问。
-
变量提升不同:
var会提升变量声明,但赋值留在原地,因此未赋值前是undefined。let也会提升,但在声明之前存在 暂时性死区,访问会报错。
-
重复声明不同:
var允许在同一作用域内重复声明同名变量。let不允许重复声明。
-
全局绑定不同:
- 在全局作用域中,
var声明的变量会成为window对象的属性。 let声明的变量不会绑定到window。
- 在全局作用域中,
推荐优先使用 let
let 避免了作用域污染、变量提升的潜在问题,更适合现代 JavaScript 开发