`let` 和 `const` 有什么区别?
时间: 2024-09-22 19:06:22 浏览: 18
`let` 和 `const` 都是 JavaScript 中用于声明变量的关键字,它们的主要区别在于变量的可变性和赋值特性:
1. **可变性**:
- `let` 定义的是可变的(mutable)变量,允许后续修改其值:
```javascript
let num = 5;
num = 10; // 正确,num的值可以改变
```
- `const` 声明的是常量(constant),一旦赋值就不能再更改它的值,除非初始值是一个可枚举类型的对象(如 Map 或 Set)或空对象({} 或 []):
```javascript
const pi = 3.14;
pi = 3; // 错误,尝试修改const变量值会报错
```
2. **初始化**:
- `let` 必须在声明时初始化:
```javascript
let uninitialized; // 报错,未提供初始值
```
- `const` 也需要初始化,但是在某些情况下允许将变量声明但不赋值:
```javascript
const uninitializedConst = undefined; // 可以这样做
```
3. **作用域**:
- 两者都是块级作用域,即只在代码块内有效。
4. **删除引用**:
- 只有在对象或数组本身被删除的情况下,通过`delete`操作符删除`const`变量的引用才会引发错误。
总结来说,如果你预计需要对变量的值进行修改,就使用 `let`;如果变量的值应该是固定的并且你想明确表示它不可修改,那么使用 `const`。但要注意,在处理复杂数据结构时,尤其是对象和数组,`const` 可能会涉及到深浅拷贝的问题。