JavaScript在关键字“class”处抛出语法错误
我正在做一个程序来跟踪我的学校日程。我为需要跟踪的每一项准备了变量:
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'
我尝试了以下方法:
- 把它改名为
Class,大写的C → 能正常工作但看起来有点怪 - 改名为
myclass→ 也能工作 - 给它加上像 "class" 那样的引号 → 出现了不同的错误
- 将该行移动到文件顶部 → 仍然会出错
为什么我的变量名会把一切都搞砸?朋友说变量名几乎可以“任何东西”,所以我以为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);
需要避免的其他保留字
一些常见的、容易让初学者踩坑的保留字包括:class、function、return、if、else、for、while、let、const、var、new、this、super、import、export、default、delete、typeof、instanceof、null、true、false。
完整列表如你所好奇,请参考 MDN的保留字页面。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。