2014-02-26 44 views
2
(function(){ window.myGlobal=42})(); 
console.error(myGlobal); 

Java的罐子compiler.jar --jscomp_warning undefinedVars如何爲google閉包編譯器聲明全局變量?

警告 - 可變myGlobal是未申報

+0

你嘗試console.error(window.myGlobal)? – Rohan

+0

當然,它是有效的,但目標是不必以「窗口」作爲前綴。 – Tom

+1

請參閱[本文](https://developers.google.com/closure/compiler/docs/limitations) – Rohan

回答

2

由於羅漢在評論中指出的,封編譯器認爲的window.myGlobalmyGlobal不同的東西,連儘管你和我知道他們實際上是一樣的。如果你需要將它定義一個函數裏面,你可以做在所有情況下類似

var myGlobal; 
(function() { myGlobal = 42; })(); 
console.log(myGlobal); 

,或者使用window

window.myGlobal = null; 
(function() { window.myGlobal = 42; })(); 
console.log(window.myGlobal); 
+0

你的第一個解決方案是最優雅的一個,謝謝你的想法! – Tom

+0

是的,謝謝你的想法,儘管這仍然不是一種將變量聲明爲全局變量的方法(例如,在另一個JS文件中聲明閉包編譯器不用於編譯)。 –