Closure编译器与对象的问题

Gov*_*iya 4 javascript google-closure-compiler

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

  var settings = {
                 providers: ['A', 'B', 'C'],
                 interface: 'basic16',
                 apikey: 'XXXXX-XXXXX-XXXXX-XXXXXXXXXX'
                 }
Run Code Online (Sandbox Code Playgroud)

错误是

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'
        ^
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*iko 7

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'
};
Run Code Online (Sandbox Code Playgroud)