我有一個關於Javascript中的變量範圍的問題。我在不同的時間在網頁上加載了一系列腳本。我需要一個名爲MyVar的全局對象,以便他們都可以訪問它們。我想避免重新定義它,但我想它必須在第一個腳本的某個時刻定義。我的問題是使用var MyVar = MyVar || {}
的解決方案?Javascript全局變量重定義?
感謝
/**
* Script 1
*/
var MyVar = MyVar || {};
MyVar.config = {
x : 2,
y : 3
};
/**
* Script 2
*/
//is this correct?
var MyVar = MyVar || {};
//to which MyVar am I assigning the apple property?
MyVar.apple = 'red';
UPDATE
偉大的答案至今傢伙感謝。
雖然最後一部分,第二次var語句在第二次重複var MyVar = MyVar || {};
時是幹什麼的?它是否在全球範圍內創建了一個名爲MyVar
的新變量,該變量分配了現有的MyVar
的值?
其他海報是正確的假設我有這些腳本同步加載在<script>
標籤,但由於分工我創建腳本,然後不控制何時以及如何加載,所以需要一個傻瓜式的方法來創建/利用我的MyVar
對象。
感謝
查看[有關處理全局變量時的最佳做法的此問題](http://stackoverflow.com/q/5063878/562906) – sinelaw
是的,您的代碼將起作用。是的,你應該儘可能避免使用全局變量。 – wless1
閱讀'var MyVar = MyVar || {};'如果var MyVar = MyVar存在(並且不等於false或0),則爲'var MyVar = MyVar;如果不存在則爲新對象。 – ic3b3rg