几年前,有人已经问过一个非常类似的问题-why is class a reserved word in JavaScript?。答案是,以便您可以添加我们现在拥有的class
关键字。
但是我想再进一步解决这个问题。为什么拥有class
关键字使禁止使用class
作为标识符? JS语法中是否有任何歧义?还是用某种解析器就可以解析JS?我看不到这样的事情是不可能的(尽管很愚蠢):
class class {
// ...
}
let x = new class();
请不要回答“因为规格说明如此”或“根据定义,关键字被禁止用作标识符”。为什么规格必须是这种方式?还是武断的决定?
这个问题并不完全是出于好奇。例如,{@ {1}}是一个禁止的标识符这一事实浮出水面,例如React是否应在JSX中使用class
或class
。
答案 0 :(得分:2)
如果类可以用作这样的标识符:
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() { /*???*/ }
}