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 之前唯一的变量声明方式。它有一些反直觉的行为,现代代码中已被 letconst 取代:

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
不能以数字开头value11value
区分大小写nameName
不能用保留字myClassclass, if, return
驼峰命名法(惯例)firstName, totalPricefirst_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);