¿Por qué JavaScript no permite una cadena de plantilla como clave de propiedad del objeto? Por ejemplo, cuando ingreso:
foo = {`bar`: 'baz'}
en el REPL de NodeJS, lanza un SyntaxError
con "Cadena de plantilla inesperada" con un seguimiento de pila largo. Sin embargo, los valores de propiedad están bien, lo que no es tan inesperado. Se producen errores similares en el navegador, por ejemplo, Firebug lanza un SyntaxError
"ID de propiedad no válido".
Se permiten cadenas de plantilla en "nombres de propiedad calculados". Por ejemplo, esto se compila perfectamente bien en todos los navegadores que admiten la sintaxis:
var foo = {
[`bar` + 1]: `baz`
};
y crea el objeto {"bar1": "baz"}
.
¿Por qué no se permiten cadenas de plantilla como claves de objeto literal? ¿Es por motivos de rendimiento? Las cadenas de plantillas deben compilarse, posiblemente en tiempo de ejecución (corríjame si me equivoco), lo que significa que cada vez que encuentra este objeto, el intérprete tendrá que calcular el nombre del objeto. Teniendo en cuenta cosas como cadenas de plantillas "cocidas", parece que esto podría volverse lento, aunque hemos tenido getters y setters desde ES5. Firefox no menciona esto como un error, por lo que lo encontré inesperado. ¿Se permitirá la sintaxis en el futuro?