Ключевые слова JavaScript в хеш-ключах

В ядрах JS на основе V8 вы можете использовать ключевые слова без кавычек в ключах свойств, например ({ delete: 1 })в то время как в Rhino или других движках JS выдает ошибку, как это возможно? Какое должно быть правильное поведение?

spaceman@spaceman-laptop:~$ rhino
Rhino 1.7 release 2 2010 01 20
js> ({ delete: 1 })        
js: "<stdin>", line 2: invalid property id
js: ({ delete: 1 })
js: .........^
js> 
spaceman@spaceman-laptop:~$ node
> ({ delete: 1})
{ delete: 1 }

2 ответа

Решение

Новая спецификация ECMAScript 5 позволяет именам свойств быть зарезервированными словами. Некоторые движки могли бы принять эту новую "функцию", в то время как другие могут по-прежнему требовать, чтобы имена свойств заключались в кавычки, когда они оказались зарезервированными словами.

Ради ясности вы можете избежать delete или же new или другие операторы в качестве имен свойств, даже если более новые спецификации смягчены

Другие вопросы по тегам