繁体   English   中英

Closure编译器与对象的问题

[英]Closure compiler issues with object

我试图在谷歌闭包编译器中编译我的Js代码,我在这段代码上收到错误

  var settings = {
                 providers: ['A', 'B', 'C'],
                 interface: 'basic16',
                 apikey: 'XXXXX-XXXXX-XXXXX-XXXXXXXXXX'
                 }

错误是

JSC_PARSE_ERROR: Parse error. invalid property id at line 3 character 10
interface: 'basic16',
          ^
JSC_PARSE_ERROR: Parse error. syntax error at line 3 character 11
interface: 'basic16',
           ^
JSC_PARSE_ERROR: Parse error. syntax error at line 4 character 8
apikey: 'XXXXX-XXXXX-XXXXX-XXXXXXXXXX'
        ^

但是这个代码在任何浏览器中都适用于我(chrome,firefox,opera,safari,IE7,8,9)

MDN声明关键字interface保留供将来使用,不能用于属性/函数/变量名称。

https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words

事实是,MDN还声明此关键字的使用仅在严格模式下受到限制。 因此,即使在非严格模式下,当我抱怨这个时,我也不太确定闭包编译器是否正在做正确的事情。 这看起来更像是一个bug,但最好还是避免使用这些关键字。

但是,解决方案是简单地将标识符包装在引号中:

var settings = {
    providers: ['A', 'B', 'C'],
    'interface': 'basic16',
    apikey: 'XXXXX-XXXXX-XXXXX-XXXXXXXXXX'
};

Ecmascript 3禁止将关键字和保留关键字作为属性名称。 Ecmascript 5解除了这个限制(他们仍然不允许作为变量和函数名称)。 但是,编译器默认使用ecmascript 3模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM