回答
聲明全局變量只能用作最後選項。
全局變量一般不好,特別是在JavaScript中。根本沒有辦法阻止另一塊JavaScript的破壞你的全球。這種破壞會悄然發生並導致運行時錯誤。
以下列爲例。
// Your code
myParam = { prop: 42 };
function operateOnMyParam() {
console.log(myParam.prop);
}
在這裏,我宣佈2個全局變量
- myParam
- operateOnMyParam
而孤立測試你的JavaScript這可能會很好地工作。但是,如果測試用戶與出現這種情況有以下定義
// My code
function myParam() {
console.log("...");
}
這也定義了一個全局命名值其myParam與你擦出myParam我的JavaScript庫結合您的JavaScript庫後會發生什麼。哪一個取決於腳本的導入順序。但無論哪種方式,我們中的一個人都陷入困境,因爲我們的全球物體之一已經死亡
你能解釋一下,或者鏈接到別人的解釋,爲什麼這是? –
@Nathan - http://c2.com/cgi/wiki?GlobalVariablesConsideredHarmful –
@Nathan - 也許對你更好:http://c2.com/cgi/wiki?GlobalVariablesAreBad –
有很多很多的原因..但一個簡單的是..函數的參數只存在於函數中,而它正在運行。全局變量存在所有的時間,這意味着:
- 它佔用的內存中,直到您手動「摧毀」了
- 每個全局變量的名稱必須是唯一的
- 如果,你的函數內..你調用另一個函數..最終調用第一個函數,突然間你可能會得到意想不到的結果。
總之:因爲函數參數只活了一個非常短的時間內和之外的功能不存在,它更容易理解這是怎麼回事,並大大降低了錯誤的風險。
在處理無框架JavaScript時,我會將我的簡單變量和函數存儲在對象字面上,以免混亂全局命名空間。
var myObject = {
variableA : "Foo",
variableB : "Bar",
functionA : function(){
//do something
//access local variables
this.variableA
}
}
//call functions and variables
myObject.variableA;
myObject.functionA();
- 1. 將全局變量傳遞給函數是否有價值?
- 2. 爲什麼不將全局變量值傳遞給函數?
- 3. 將局部變量傳遞給全局函數
- 4. 將全局javascript變量傳遞給php
- 5. 將全局變量傳遞給插件
- 6. 將全局JS變量傳遞給DOM
- 7. 將一個全局變量傳遞給一個函數 - C++
- 8. PHP - 如何將全局變量傳遞給函數
- 9. 如何將全局變量傳遞給util函數
- 10. 將變量值傳遞給eval函數
- 11. 將全局指針傳遞給函數
- 12. 將全局變量傳遞給函數 - 全局變量在函數運行後不更新
- 13. 從函數傳遞局部變量變爲全局變量
- 14. 將變量傳遞給一個函數並更改其全局值
- 15. 如何將innerHTML元素的值傳遞給全局變量?
- 16. Seg Fault - 將變量傳遞給方法更改全局值
- 17. 如何將JQuery變量傳遞給全局變量
- 18. 傳遞結構與將變量傳遞給函數C
- 19. 將全局變量var的名稱傳遞給函數以改變var?
- 20. 將變量值傳遞給腳本函數中的變量(Javascript)
- 21. 將jQuery變量傳遞給Javascript函數
- 22. Python:tkinter:將變量傳遞給函數
- 23. 將PHP變量傳遞給JavaScript函數
- 24. 將變量傳遞給.html()函數
- 25. 將變量傳遞給jQuery .css()函數
- 26. printf函數將變量傳遞給javascript
- 27. 將變量傳遞給函數失敗
- 28. 將變量傳遞給ajax函數
- 29. 將Ajax變量傳遞給Codeigniter函數
- 30. 將PHP變量傳遞給JavaScript函數
關於在JavaScript中使用全局變量,StackOverflow已經存在很多問題。如果您使用此頁面右上角的搜索字段,則會發現很多信息。 – user113716
@patrickdw:對不起。就像我所說的,我是JavaScript新手,有時無法自行找到問題。我只是在StackOverflow上做了另一個搜索,看看我能找到什麼 - 不是很適用(可能是由於我的JavaScript新手狀態)。我很樂意閱讀上述材料!什麼是尋找它的好方法? –
此搜索[「什麼時候應該在JavaScript中使用全局變量」](http://stackoverflow.com/search?q=q = when + should + I + use + global + variables + in + javascript)應該給你足夠的素材。你會發現一致的答案是儘可能地避免全局性。任何未在函數中聲明的變量,或未使用'var'聲明的變量都將是全局變量。 – user113716