2012-11-28 48 views
0

我使用HTML5 WebWorkers,我就面臨這樣的問題(在編譯時我用封編譯腳本):跳過全局變量衝突封閉Compier

我有兩個文件(.js文件)這裏面的代碼:

... 

var encoder = null; 

... 

換句話說,我有兩個同名的全局變量。

這些文件將作爲我希望啓動的兩個工作人員的源使用,而且據我所知,這兩個文件都將在其自己的作用域中執行,並且在運行時不會發生衝突。

一個條件是,我想在一個時間

--module module1:1 

--js file 

--module module2:1 

--js file2.js 

但是編譯兩個文件(模塊),關閉編譯器檢測到衝突,並表示,該模塊2應取決於模塊1,因爲兩者具有相同的全局變量。

我該怎麼辦?

+1

閉包編譯器是否顯示錯誤或警告,可以忽略? –

+0

我試圖使用'QUIET'模式,但是這不起作用。 – bonbonez

回答

3

有幾種不同的選擇:

  1. 使用您的變量作爲全球(窗口)對象的屬性。定義如下:window.encoder = window['encoder'] || {};
  2. 將一個@suppress {duplicate}註釋添加到第二個變量定義。
  3. 添加一個立即執行的匿名函數包裝器,將您的變量定義移出全局範圍。然後,您可能需要明確導出您的變量以在全局範圍內重新公開它。
+0

謝謝Chad,你用@suppress註解的建議是我需要的。 – bonbonez