Почему JavaScript не разрешает строку шаблона как ключ свойства объекта? Например, когда я ввожу:
foo = {`bar`: 'baz'}
в NodeJS REPL, он выдает SyntaxError
с "Неожиданной строкой шаблона" с длинной трассировкой стека. Значения свойств прекрасны, однако это не так неожиданно. Подобные ошибки происходят в браузере, например, Firebug бросает SyntaxError
с "недопустимым идентификатором свойства".
Шаблонные строки разрешены в "именах вычисленных свойств". Например, это компилируется отлично во всех браузерах, поддерживающих синтаксис:
var foo = {
[`bar` + 1]: `baz`
};
и создает объект {"bar1": "baz"}
.
Почему строки шаблонов не допускаются как ключи буквального объекта? Является ли это по соображениям производительности? Строки шаблона должны быть скомпилированы, возможно, во время выполнения (исправьте меня, если я ошибаюсь), что означает, что каждый раз, когда он сталкивается с этим объектом, интерпретатор должен будет вычислить имя объекта. Факторинг в таких вещах, как "приготовленные" строки шаблонов, кажется, что он может замедляться, хотя с ES5 мы имеем геттеры и сеттеры. Firefox не упоминает об этом как об ошибке, поэтому я нашел ее неожиданным. Будет ли разрешен синтаксис в будущем?