let var const 区别
时间: 2024-10-14 09:16:00 浏览: 36
在JavaScript中,`let`, `var`, 和 `const` 都是用来声明变量的关键字,但它们之间有一些重要的区别:
1. **var**: 变量作用域是函数级别的,在函数内部创建的变量不会影响到函数外部。如果在同一作用域内多次声明,会被后面的覆盖(即变量提升)。`var` 变量可以重新赋值,也可以改变其指向的对象。
```javascript
function test() {
var x = 1;
if (true) {
var x = 2; // 同一作用域内的x被修改
}
console.log(x); // 输出2
}
```
2. **let**: 具有块级作用域,只在它所在的代码块内有效,如花括号{}所包围的区域。`let` 变量同样可以重新赋值,但是不能改变其指向。
```javascript
if (true) {
let y = 1;
} else {
let y = 2; // 不影响上面的y,因为这是另一个独立的作用域
}
console.log(y); // 抛出ReferenceError,因为在当前作用域找不到y
```
3. **const**: 也具有块级作用域,但它声明的变量是常量,一旦赋值就不能再更改其值,也不能重新指向其他对象。注意,对于基本数据类型(如数字、字符串),它的值不可变;但对于引用类型(如对象或数组),虽然不能改变引用,但可以修改其内容。
```javascript
const z = [1, 2]; // 定义了一个不可变数组
z.push(3); // 可以修改数组的内容
```
阅读全文