Warum lässt JavaScript eine Vorlagenzeichenfolge nicht als Objekteigenschaftsschlüssel zu? Zum Beispiel, wenn ich Folgendes eingebe:
foo = {`bar`: 'baz'}
In die NodeJS REPL wird eine SyntaxError
mit "Unerwartete Vorlagenzeichenfolge" mit einer langen Stapelverfolgung ausgelöst. Eigenschaftswerte sind jedoch in Ordnung, was nicht so unerwartet ist. Ähnliche Fehler treten im Browser auf, z. B. löst Firebug eine SyntaxError
mit "ungültiger Eigenschafts-ID" aus.
Vorlagenzeichenfolgen sind in "berechneten Eigenschaftsnamen" zulässig. Dies lässt sich beispielsweise in allen Browsern, die die Syntax unterstützen, einwandfrei kompilieren:
var foo = {
[`bar` + 1]: `baz`
};
und erstellt das Objekt {"bar1": "baz"}
.
Warum sind Vorlagenzeichenfolgen nicht als Literalobjektschlüssel zulässig? Ist es aus Leistungsgründen? Vorlagenzeichenfolgen müssen möglicherweise zur Laufzeit kompiliert werden (korrigieren Sie mich, wenn ich falsch liege). Dies bedeutet, dass der Interpreter jedes Mal, wenn er auf dieses Objekt trifft, den Objektnamen berechnen muss. Unter Berücksichtigung von Dingen wie "gekochten" Template-Strings scheint dies langsam zu werden, obwohl wir seit ES5 Getter und Setter haben. Firefox erwähnt dies nicht als Fehler, weshalb ich es unerwartet fand. Wird die Syntax irgendwann in der Zukunft erlaubt sein?