2010-11-28 68 views
10

在基于V8的JS引擎中,您可以在属性键中使用未加引号的关键字,如({ delete: 1 }),而在Rhino或其他JS引擎中,它会引发错误,这怎么可能?什么应该是正确的行为?哈希键中的JavaScript关键字

[email protected]:~$ rhino 
Rhino 1.7 release 2 2010 01 20 
js> ({ delete: 1 })   
js: "<stdin>", line 2: invalid property id 
js: ({ delete: 1 }) 
js: .........^ 
js> 
[email protected]:~$ node 
> ({ delete: 1}) 
{ delete: 1 } 

回答

15

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

+1

我找到了差异:http://www.google.com/codesearch /p?hl=en#W9JxUuHYyMg/trunk/src/parser.cc&q=parser%20package:http://v8%5C.googlecode%5C.com&l=3914和http://mxr.mozilla.org/js/source /js/rhino/src/org/mozilla/javascript/Parser.java#3083 V8显式接受的关键字标记 – 2010-11-28 20:59:09

2

为了清楚,你可能想避免deletenew或者其他经营者财产的名称,甚至在新的规格是放松一下