简介
var
、let
和 const
都是用于声明变量的关键字,一般建议使用let和const
-
var
: 函数作用域,可变,不推荐使用。 -
let
: 块级作用域,可变,适用于需要重新赋值的变量。 -
const
: 块级作用域,不可变(但对象/数组属性可变),适用于不需要重新赋值的变量。
区别
1. 作用域
-
var
:var
声明的变量具有函数作用域或全局作用域。这意味着在函数内部声明的var
变量在整个函数内都是可访问的,即使在声明之前。
function example() {if (true) {var x = 10;}console.log(x); // 输出 10
}
let
和 const
: let
和 const
声明的变量具有块级作用域。这意味着它们只在声明它们的块(如 if
语句、for
循环等)内可访问。
function example() {if (true) {let x = 10;}console.log(x); // 报错:x is not defined
}
2. 可变性
-
var
和let
:var
和let
声明的变量是可变的,即它们的值可以被重新赋值。
var a = 5;
a = 10; // 合法let b = 5;
b = 10; // 合法
const
: const
声明的变量是不可变的,即它们的值不能被重新赋值。但是,如果 const
变量是一个对象或数组,它们的属性或元素是可以修改的。
const c = 5;
c = 10; // 报错:Assignment to constant variable.const obj = { key: 'value' };
obj.key = 'new value'; // 合法
在 Vue.js 中的应用
在 Vue.js 中,let
和 const
是更常见的选择,因为它们提供了更好的作用域控制和可预测性。
-
let
: 用于声明需要在组件生命周期内重新赋值的变量。
export default {data() {return {count: 0};},methods: {increment() {let newCount = this.count + 1;this.count = newCount;}}
};
const
: 用于声明不需要重新赋值的变量,如常量或对象/数组的引用。
export default {data() {return {user: {name: 'John',age: 30}};},methods: {updateUserAge() {const user = this.user;user.age = 31; // 合法,因为 user 是对象的引用}}
};