![](/img/trans.png)
[英]Does the reserved keyword 'implements' in JavaScript have any usage?
[英]Why does 'class' have to be a reserved keyword in JavaScript?
多年前有人已经问过一个非常类似的问题- 为什么类在JavaScript中是保留字? 。 答案是,这样您可以添加我们现在拥有的class
关键字。
但是,我想进一步解决这个问题。 为什么拥有class
关键字使得必须禁止使用class
作为标识符? JS语法中是否有任何歧义? 还是用某种解析器就可以解析JS? 我看不到这样的事情是不可能的(尽管很愚蠢):
class class {
// ...
}
let x = new class();
请不要回答“因为规范这样说”或“根据定义,关键字被禁止用作标识符”。 为什么规格必须是这种方式? 还是武断的决定?
这个问题并不完全是出于好奇。 例如,在React是否应在JSX中使用class
或className
的争论中出现了class
是被禁止的标识符的事实。
如果可以将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() { /*???*/ }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.