散列键中的JavaScript关键字

时间:2010-11-28 19:29:50

标签: javascript object

在基于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 }

2 个答案:

答案 0 :(得分:15)

ECMAScript 5 specification允许属性名称为保留字。有些引擎可能已经采用了这个新的“功能”,而其他引擎可能仍然需要在保留字时引用属性名称。

答案 1 :(得分:2)

为了清楚起见,您可能希望避免使用deletenew或其他运算符作为属性名称,即使在较新的规范放宽时也是如此