智汇百科
霓虹主题四 · 更硬核的阅读氛围

变量声明 let 和 const 的区别详解

发布时间:2026-01-16 16:01:08 阅读:205 次

在日常写代码时,经常会遇到变量声明的问题。特别是在使用 JavaScript 时,let 和 const 是两个最常用的声明方式。虽然它们看起来差不多,但用错了场景,程序就容易出问题。

let 声明的变量可以重新赋值

使用 let 声明的变量,允许在后续代码中修改它的值。比如你正在做一个记账小工具,每个月的支出金额可能不一样,这时候用 let 就很合适。

let monthlyExpense = 1500;
monthlyExpense = 2000; // 合法,允许重新赋值
console.log(monthlyExpense); // 输出 2000

const 声明的变量不能重新赋值

const 声明的是一个常量,一旦赋值就不能再改。这适合用来定义那些固定不变的值,比如税率、应用名称等。

const taxRate = 0.08;
taxRate = 0.1; // 错误!不允许重新赋值
// 浏览器会报错:Assignment to constant variable.

注意:const 不代表“不可变”

很多人以为 const 声明的变量完全不能变,其实不是。如果 const 声明的是一个对象或数组,虽然不能重新赋值给这个变量,但可以修改里面的属性或元素。

const user = { name: '张三', age: 25 };
user.age = 26; // 合法,可以修改属性
user = { name: '李四' }; // 错误!不能重新赋值

const list = [1, 2, 3];
list.push(4); // 合法,数组内容可以改
list = [5, 6]; // 错误!不能重新赋值

声明时机和作用域相同

let 和 const 都是块级作用域,也就是说,它们只在所在的 {} 内有效。不像以前的 var,会有变量提升带来的意外问题。

if (true) {
  let a = 1;
  const b = 2;
}
console.log(a); // 报错:a is not defined
console.log(b); // 报错:b is not defined

实际开发中的使用建议

现在大多数开发者习惯先用 const,只有确定需要重新赋值时才改用 let。这样能减少意外修改带来的 bug。比如你在写一个表格处理脚本,配置项一般不会变,就用 const;而循环计数器或累计值就需要 let。

const sheetName = '销售汇总';
let totalSales = 0;

for (let i = 0; i < rows.length; i++) {
  totalSales += rows[i].value;
}