JavaScript 变量
变量是用来存储数据的容器。你可以把数据放进去,给它一个名字,后面随时用这个名字来读取或修改。
声明变量
JavaScript 有三种声明变量的关键字:
javascript
let age = 25; // 可重新赋值
const name = '张三'; // 不可重新赋值(常量)
var title = '旧式写法'; // 不推荐使用 let — 可变变量
let 声明后可随时改变值。这是最常用的声明方式:
javascript
let score = 0;
score = 10; // 重新赋值
score = score + 5; // 基于原值计算:15
let message; // 可以不赋初始值
message = '你好'; // 稍后赋值 const — 常量
const 声明后不能重新赋值:
javascript
const PI = 3.14159;
PI = 3.14; // ❌ 报错:Assignment to constant variable
const user = '张三';
user = '李四'; // ❌ 报错 const 声明数组或对象时,不能重新赋值整个变量,但可以修改内部元素。这里的”常量”指的是变量的绑定不变,而不是值本身不可变。
javascript
const numbers = [1, 2, 3];
numbers.push(4); // ✅ 可以修改数组内容
numbers[0] = 10; // ✅ 可以修改元素
numbers = [5, 6]; // ❌ 不能重新赋值变量本身
const person = { name: '张三' };
person.name = '李四'; // ✅ 可以修改属性
person = { name: '王五' }; // ❌ 不能重新赋值 let vs const:选哪个
默认使用 const,只有在确认变量需要重新赋值时才改用 let。这条规则来自大量工程经验的总结:
- 使用
const让代码意图更清晰(“这个值不会变”) - 减少不经意间修改了不该改的变量导致的 bug
- 读者看到一个变量用了
const,就知道后面不会再变,降低理解成本
var — 旧式声明(不推荐)
var 是 ES6 之前唯一的变量声明方式。它有一些反直觉的行为,现代代码中已被 let 和 const 取代:
javascript
var x = 10;
var x = 20; // var 允许重复声明同名变量,let/const 不允许
console.log(y); // undefined(var 声明的变量会被"提升")
var y = 5; 新代码不要使用 var。如果你看到老项目中有 var,知道它是旧语法即可,不必在新代码中使用。
命名规则
| 规则 | ✅ 正确 | ❌ 错误 |
|---|---|---|
字母、数字、$、_ | userName, _private, $var | — |
| 不能以数字开头 | value1 | 1value |
| 区分大小写 | name ≠ Name | — |
| 不能用保留字 | myClass | class, if, return |
| 驼峰命名法(惯例) | firstName, totalPrice | first_name, TotalPrice |
javascript
// ✅ 推荐的命名风格
const userName = '张三';
const totalAmount = 100;
const isActive = true;
// ❌ 不推荐
const user_name = '张三';
const TotalAmount = 100;
const a = 100; // 变量名应具有描述性 未赋值变量的默认值
声明的变量如果没有赋值,默认值是 undefined:
javascript
let x;
console.log(x); // undefined 使用未声明的变量则会直接报错:
javascript
console.log(y); // ❌ ReferenceError: y is not defined