JavaScript使用class作为变量名触发语法错误的原因解析
为什么用
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,程序可正常运行但格式看起来怪异; - 重命名为
myclass,程序也能正常运行; - 给
class添加引号,出现其他错误; - 将该行移至文件顶部,仍然报错。
问题的核心原因是:class是JavaScript的保留关键字。
JavaScript语言本身预留了一批单词用于实现核心语法功能,这些单词被称为保留关键字,它们不能被用作变量名、函数名或其他标识符。class就是其中之一——它是ES6标准中用来定义类的关键字,比如:
class Student { constructor(name) { this.name = name; } }
针对你尝试的几种方法,具体解释如下:
- 大写的
Class能运行,是因为JavaScript区分大小写,Class并不是保留关键字。但通常首字母大写的标识符用来命名类,所以用作普通变量名时会不符合常规的命名习惯,让你觉得格式怪异。更规范的变量名应该用小驼峰写法,比如myClass。 myclass是完全合法的自定义标识符,没有用到任何保留关键字,所以程序可以正常运行。- 给
class加引号是错误的做法——变量名不需要加引号,加引号后会变成字符串字面量,破坏了变量定义的语法结构,自然会触发其他错误。 - 把变量定义移到文件顶部没用,因为保留关键字的限制是全局的,不管代码写在哪个位置,语法检查都会直接识别到
class作为变量名的非法性,从而报错。
你朋友说“变量名几乎可以是任意内容”没错,但前提是不能使用JavaScript的保留关键字。除了class,常见的保留关键字还有let、const、function、if、else等,使用前可以先确认是否属于预留词汇。
内容的提问来源于stack exchange,提问作者Lucia Garcia




