Chrome中带有({})的默认令牌意外默认值

yur*_*y-n 2 javascript

在Chrome(+ Opera)中的任何对象上获取或设置属性"default"时,我收到错误"SyntaxError:Unexpected token default".

({}).default
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样吗?

upd:每个人,PLZ,因为它对FF没有意义所以在测试时你可以错过这个bug.

bob*_*nce 8

default是JavaScript中的关键字(用于switch语句).

在ECMAScript第五版中允许使用点属性访问器中的保留字(具体来说:点属性访问器的语法是MemberExpression . IdentifierName[第12.2.1节] IdentifierName,不像Identifier,可能是ReservedWord[第7.6节]),但不在ECMAScript第三版中(它在哪里MemberExpression . Identifier).第三版是目前所有浏览器支持的基准.

为安全使用[]财产访问:

({})['default']= ...;
Run Code Online (Sandbox Code Playgroud)

或避免使用关键字作为属性名称.