簡體   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