Определяя подобный объект, вы просто объявляете идентификаторы или переменные. У идентификаторов есть определенные правила, которые вы можете проверить в спецификации ECMAScript в свободное время, но обе формы эквивалентны. Однако браузеры ведут себя иначе, когда вы пытаетесь использовать зарезервированные или будущие зарезервированные ключевые слова. Например, их нельзя использовать в качестве идентификаторов
break
do
instanceof
typeof
case
else
new
var
catch
finally
return
void
continue
for
switch
while
debugger
function
this
with
default
if
throwdelete
in
try
Не все браузеры помечают это как ошибку, но некоторые могут. И есть список зарезервированных ключевых слов в будущем:)
class
enum
extends
super
const
export
import
Чтобы быть в безопасности, и не нужно каждый раз искать спецификации, я бы сказал, что лучше указывать ваши идентификаторы. Чтобы действительно увидеть проблему, проверьте их в Safari, по крайней мере, в версии 4.0.4, когда вы используете любое из этих ключевых слов в качестве идентификаторов. Например, попробуйте это:
var class = "my class";
Не будет работать в простом объявлении или в объявлении объекта типа JSON:
var myObject = {
goodProperty: "this works",
class: "gimmeh the errarz codez!",
};