JavaScript 变量
变量是用来存储数据的容器。你可以把数据放进去,给它一个名字,后面随时用这个名字来读取或修改。
声明变量
JavaScript 有三种声明变量的关键字:
javascript
let age = 25;
const name = '张三';
var title = '旧式写法';
document.write('age = ' + age + '<br>');
document.write('name = ' + name + '<br>');
document.write('title = ' + title); let — 可变变量
let 声明后可随时改变值。这是最常用的声明方式:
javascript
let score = 0;
score = 10;
score = score + 5;
let message;
message = '你好';
document.write('score = ' + score + '<br>');
document.write('message = ' + message); const — 常量
const 声明后不能重新赋值:
javascript
const PI = 3.14159;
// PI = 3.14; // ❌ 报错:Assignment to constant variable
const user = '张三';
// user = '李四'; // ❌ 报错
document.write('PI = ' + PI + '<br>');
document.write('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: '王五' }; // ❌ 不能重新赋值
document.write('numbers: ' + numbers.join(', ') + '<br>');
document.write('person.name: ' + person.name); let vs const:选哪个
默认使用 const,只有在确认变量需要重新赋值时才改用 let。这条规则来自大量工程经验的总结:
- 使用
const让代码意图更清晰(“这个值不会变”) - 减少不经意间修改了不该改的变量导致的 bug
- 读者看到一个变量用了
const,就知道后面不会再变,降低理解成本
var — 旧式声明(不推荐)
var 是 ES6 之前唯一的变量声明方式。它有一些反直觉的行为,现代代码中已被 let 和 const 取代:
javascript
var x = 10;
var x = 20;
document.write('x = ' + x + '<br>');
document.write('y(声明前访问) = ' + y + '<br>'); // undefined(var 声明的变量会被"提升")
var y = 5;
document.write('y(赋值后) = ' + y); 新代码不要使用 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;
document.write('userName: ' + userName + '<br>');
document.write('totalAmount: ' + totalAmount + '<br>');
document.write('isActive: ' + isActive); 未赋值变量的默认值
声明的变量如果没有赋值,默认值是 undefined:
javascript
let x;
document.write('x = ' + x); // undefined 使用未声明的变量则会直接报错:
javascript
// console.log(y); // ❌ ReferenceError: y is not defined
let y = 10;
document.write('y = ' + y);