`let` 和 `const` 有哪些区别?
时间: 2024-09-29 12:08:42 浏览: 41
`let` 和 `const` 都是 ES6 中用于声明变量的新关键字,它们的主要区别在于:
1. **可变性**:
- `let`:声明的变量是可以修改的,即可以重新赋值。例如:
```javascript
let num = 1;
num = 2; // 完全合法
```
- `const`:声明的常量(不可变的变量)一旦初始化就不能再改变它的值。尝试修改 `const` 变量会报错:
```javascript
const pi = 3.14;
pi = 3; // 报错,因为pi是常量,不能更改
```
2. **作用域**:
- `let`:和 `var` 类似,也是函数级别的作用域。但在块级(如 `if`、`for` 等)内部,它是块级作用域。
- `const`:同样遵循函数级别作用域原则,但它不能在块级内部声明新的变量,除非在大括号 `{}` 中。
3. **暂时性死区(TDZ)**:
- 对于 `let` 和 `const`,在声明它们之前尝试访问都会进入 TDZ,返回 `undefined` 而不是 `null` 或默认值。
4. **删除属性**:
- 对于对象属性,`const` 只能阻止重新赋值,而不能防止对象内部属性的改变。
- `let` 可以通过重新赋值对象来改变其属性。
总的来说,`let` 更适合需要动态修改值的情况,而 `const` 用于表示那些不应更改的常量,增加代码的安全性和可读性。在大多数情况下,推荐优先使用 `const`,只有在确实需要修改值的时候才使用 `let`。
阅读全文