为什么'class'必须是JavaScript中的保留关键字?

问题描述 投票:1回答:1

有人在几年前就问了一个非常相似的问题 - why is class a reserved word in JavaScript?。答案是,所以你可以添加我们现在拥有的class关键字。

但我想进一步提出这个问题。为什么有一个class关键字使得必须禁止使用class作为标识符? JS语法中有什么东西可以使它变得模棱两可吗?或者是这样可以用某种解析器解析JS?我不认为这样的事情是不可能的(虽然当然很愚蠢):

class class {
    // ...
}

let x = new class();

请不要回答“因为规范如此说明”或“根据定义禁止将关键字作为标识符”。为什么规范必须这样?或者它是一个任意或aestetic descision?

这个问题并不是完全闲置的好奇心。 class是禁用标识符的事实出现在辩论中,例如,React是否应该在JSX中使用classclassName

javascript language-design
1个回答
2
投票

如果class可以用作这样的标识符:

 class class 
 { // a class is followed by the classes body
   constructor() { /*...*/ }
 }

 const el = new class
 { // if class is not reserved, this is just a regular block
   alert("test");
 }

然后new class部分无法与类表达式区分开来:

 const el = new class
 {
   // block or class body?!
   constructor() { /*???*/ }
 }
© www.soinside.com 2019 - 2024. All rights reserved.