Кто-то уже задавал очень похожий вопрос несколько лет назад - почему класс является зарезервированным словом в JavaScript? . Ответ был таким, чтобы вы могли добавить ключевое слово class
, которое у нас есть сейчас.
Но я бы хотел сделать еще один шаг вперед. Почему наличие ключевого слова class
делает необходимым запретить с использованием class
в качестве идентификатора? Есть ли в грамматике JS что-нибудь, что сделало бы это неоднозначным? Или это так, что JS может быть проанализирован с определенным парсером? Я не вижу, что подобное было бы невозможно (хотя, конечно, глупо):
class class {
// ...
}
let x = new class();
Пожалуйста, не отвечайте "потому что спецификация так говорит" или "ключевое слово запрещено как идентификатор по определению". Почему спецификация должна быть такой? Или это произвольное или эстетическое решение?
Этот вопрос не совсем праздное любопытство. Тот факт, что class
является запрещенным идентификатором, возникает в дискуссии о том, должен ли React использовать class
или className
в JSX, например.