在基于V8的JS引擎中,您可以在属性键中使用不带引号的关键字,例如({ 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 }
答案 0 :(得分:15)
新ECMAScript 5 specification允许属性名称为保留字。有些引擎可能已经采用了这个新的“功能”,而其他引擎可能仍然需要在保留字时引用属性名称。
答案 1 :(得分:2)
为了清楚起见,您可能希望避免使用delete
或new
或其他运算符作为属性名称,即使在较新的规范放宽时也是如此