JavaScript가 템플릿 문자열을 객체 속성 키로 허용하지 않는 이유는 무엇입니까? 예를 들어 다음을 입력 할 때 :
foo = {`bar`: 'baz'}
NodeJS REPL SyntaxError
에 긴 스택 추적이 포함 된 "예기치 않은 템플릿 문자열"을 던집니다 . 그러나 속성 값은 괜찮지 만 예상치 못한 것은 아닙니다. 브라우저에서 유사한 오류가 발생합니다. 예를 들어 Firebug는 SyntaxError
"유효하지 않은 속성 ID"와 함께를 발생시킵니다.
"계산 된 속성 이름"에는 템플릿 문자열이 허용됩니다. 예를 들어, 이것은 구문을 지원하는 모든 브라우저에서 완벽하게 잘 컴파일됩니다.
var foo = {
[`bar` + 1]: `baz`
};
그리고 객체를 만듭니다 {"bar1": "baz"}
.
템플릿 문자열이 리터럴 객체 키로 허용되지 않는 이유는 무엇입니까? 성능상의 이유입니까? 템플릿 문자열은 런타임에 컴파일되어야합니다 (틀린 경우 수정). 즉,이 객체를 만날 때마다 인터프리터가 객체 이름을 계산해야합니다. "cooked"템플릿 문자열과 같은 것들을 고려하면, ES5 이후로 getter와 setter가 있었지만 느려질 수있는 것처럼 보입니다. Firefox는 이것을 오류로 언급하지 않기 때문에 예상치 못한 것으로 나타났습니다. 구문이 향후 언젠가 허용됩니까?