var let const 有什么区别
时间: 2024-09-06 18:02:04 浏览: 52
`var`, `let`, 和 `const` 是JavaScript中用于声明变量的关键字,它们的主要区别在于作用域和可变性:
1. **var**: 具有函数级作用域(function scope),即使在块级(如if语句)内声明也会提升到该函数顶部。var声明的变量可以重新赋值和改变其值。
```javascript
function test() {
if (true) {
var x = 10; // x在函数范围内可见
}
console.log(x); // 输出10,尽管是在if块内定义的
}
```
2. **let**: 具有块级作用域(block scope),仅在声明它的代码块(包括花括号{})内有效。let声明的变量可以在声明后被赋值,但不能重新声明同一个名称的变量在同一作用域内。
```javascript
if (true) {
let y = 20;
}
console.log(y); // ReferenceError: y is not defined,因为y在if块外部不可见
```
3. **const**: 同样具有块级作用域,但声明的变量是常量,一旦初始化就不能再改变其值。注意,对于对象引用,虽然不能改变对象本身,但如果对象内部属性是可以更改的,仍能更新这些属性。
```javascript
const z = { name: 'Tom' };
z.age = 30; // 修改对象内部属性是允许的
```
因此,选择var、let还是const取决于你的需求。如果你需要在函数内外都能访问变量,或者希望防止意外修改,应使用var。对于需要局部作用域且可能需要重新赋值的变量,let合适。而当你需要创建不会更改的值时,const是最安全的选择。
阅读全文