js中let和const的区别
时间: 2024-09-24 17:16:32 浏览: 31
在JavaScript中,`let` 和 `const` 都是用来声明变量的关键字,但它们有以下关键区别:
1. **可变性**:
- `let` 声明的是可变的(mutable)。当你使用 `let` 初始化一个变量时,你可以后续改变它的值。
- `const` 声明的是常量(immutable),一旦初始化,其值就不能再被改变。试图修改 `const` 变量的值会抛出错误。
2. **块级作用域**:
- `let` 和 `const` 都拥有块级作用域,这意味着它们只在当前大括号 `{}` 内部有效,而不是函数。
3. **提升**:
- 在代码运行前,`let` 声明会被提升到当前作用域的顶部,但赋值不会提升,因此可以先引用再声明。
- 对于 `const`,声明和赋值都会被提升,所以在声明前尝试访问 `const` 变量会报错。
4. **重复声明**:
- 如果在同一作用域内多次使用 `let` 或 `const` 来声明同名变量,只会创建一个新的变量。
- 但是,尝试在同一作用域内声明两个 `const` 变量并赋给相同的初始值,会创建一个循环依赖,导致语法错误。
```javascript
// 示例
let a = 1;
a = 2; // 正确,a的值变为2
const b = 1;
b = 2; // 错误,因为 const 的值不可更改
if (true) {
let c = 1; // 在这里声明了c,外部无法访问
}
// const d重复声明,会创建新的上下文
const d = 1;
const d = 2; // 抛出错误
```
阅读全文