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

javascript
var x = 10;
var x = 20; // var 允许重复声明同名变量,let/const 不允许

console.log(y); // undefined(var 声明的变量会被"提升")
var y = 5;

新代码不要使用 var。如果你看到老项目中有 var,知道它是旧语法即可,不必在新代码中使用。

命名规则

规则✅ 正确❌ 错误
字母、数字、$_userName, _private, $var
不能以数字开头value11value
区分大小写nameName
不能用保留字myClassclass, if, return
驼峰命名法(惯例)firstName, totalPricefirst_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