繁体   English   中英

为什么“类”必须是JavaScript中的保留关键字?

[英]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中使用classclassName的争论中出现了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM