JavaScript在关键字“class”处抛出语法错误

前端开发 2026-07-09

我正在做一个程序来跟踪我的学校日程。我为需要跟踪的每一项准备了变量:

let teacher = "Mr. Henderson";
let room = 204;
let class = "Biology";
let period = 3;

console.log(teacher + " teaches " + class + " in room " + room);

我期望的是:“Mr. Henderson teaches Biology in room 204”

错误:Uncaught SyntaxError: Unexpected token 'class'

我尝试了以下方法:

  1. 把它改名为 Class,大写的C → 能正常工作但看起来有点怪
  2. 改名为 myclass → 也能工作
  3. 给它加上像 "class" 那样的引号 → 出现了不同的错误
  4. 将该行移动到文件顶部 → 仍然会出错

为什么我的变量名会把一切都搞砸?朋友说变量名几乎可以“任何东西”,所以我以为class没问题,因为它字面上就是我正在上的一门课程。

解决方案

欢迎来到JavaScript!你最终会遇到的,是每个初学者迟早都会遇到的问题:保留字

class 是JavaScript自身用于定义类的关键字。因为语言为它留出专用用途,你不能把它用作变量名。这就是当解析器看到 let class = ... 时你的代码会出错的原因。

这也解释了你的实验之所以会按那样运行:

  • Class(大写的C)之所以能工作,是因为JavaScript是 大小写敏感,只有小写的 class 被保留。
  • myclass 能工作,是因为它只是一个普通的标识符,恰好包含这个词。
  • "class" 放在引号中成了一个字符串字面量,语法是有效的但含义完全不同(因此出现了新的错误)。

解决方法

只要把变量改名为一个未被保留的名字:

let teacher = "Mr. Henderson";
let room = 204;
let subject = "Biology";   // <-- renamed from `class`
let period = 3;

console.log(teacher + " teaches " + subject + " in room " + room);

需要避免的其他保留字

一些常见的、容易让初学者踩坑的保留字包括:classfunctionreturnifelseforwhileletconstvarnewthissuperimportexportdefaultdeletetypeofinstanceofnulltruefalse

完整列表如你所好奇,请参考 MDN的保留字页面

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章