Ключевые слова 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
или другие операторы в качестве имен свойств, даже если более новые спецификации смягчены