跳到主要内容

let与var区别

· 阅读需 2 分钟

1. 全局污染

var 声明的变量(全局作用域)会挂载到 window 对象上

let 则不会

二者都可以跨 <script> 标签使用

2. 块级作用域

使用 var 定义的变量只有两种作用域:全局和函数

而使用 let 定义的变量多了一种作用域:块级作用域

3. 暂时死区(TDZ)

var 声明变量之前使用该变量,会返回 undefined 而不是引用错误 ReferenceError

而在 letconstclass 声明变量之前,当前作用域开始到变量声明之间会出现暂时性死区

在这个区域内使用该变量,会抛出引用错误

详见 mdn 文档对于 变量提升 行为的详细说明

4. 重复声明

var 声明的变量可以被重复声明

let constclass 不可以