我正在編寫JavaScript代碼,並被告知我不應該在函數中更改全局變量。爲什麼這會成爲一個問題?有沒有任何標準的替代品?爲什麼我不應該更改函數內的全局變量?
-1
A
回答
3
在任何語言中,從函數中更改全局變量通常會使函數的輸出不確定,這會使代碼變得很難並且經常會導致不需要的副作用。因此,如果可以通過正確確定變量的範圍來避免它,如果沒有看到代碼,很難提供幫助。
名稱破壞也是一個問題。但是,通過命名您的全局變量可以很容易地解決這個問題。最後,正如你可能知道的那樣,因爲你的問題確實會說「爲什麼我不應該改變一個全局變量」,只讀全局變量(常量)並不是一個真正的問題,因爲它們不會改變,因此也不會有問題任何副作用。
+0
謝謝。這有幫助。 – parap 2013-03-06 21:22:50
0
全局變量是線程安全系統的反命題。你不應該擁有它們,但是如果你擁有它們,只有一個線程應該擁有/改變它們。他們應該始終通過服務層來處理。
+0
你能定義線程嗎? – parap 2013-03-06 21:52:17
相關問題
- 1. Python函數不應該改變一個全局變量
- 2. 函數不會改變全局變量
- 3. 使用函數更改全局變量
- 4. 爲什麼局部變量會殺死我的全局變量?
- 5. JavaScript - 函數不修改全局變量
- 6. 全局變量在函數不更新
- 7. 爲什麼不將全局變量值傳遞給函數?
- 8. 我不能更改setInterval內的全局變量es6
- 9. 全局變量不是全局的 - 僅在函數內
- 10. 爲什麼BroadcastReceiver不能在應用程序中更改全局變量
- 11. 爲什麼我的包含函數不能獲取全局變量值?
- 12. 爲什麼我的全局變量不被另一個函數看到?
- 13. 爲什麼即使在指定全局之後,函數也不會改變全局變量
- 14. 爲什麼Javascript全局變量不是全局的?
- 15. 全局變量不會從AJAX成功內的函數更新
- 16. 爲什麼這個函數裏面的變量是全局的?
- 17. 爲什麼我的全局變量不爲空
- 18. Javascript:函數內的全局變量
- 19. 在JavaScript中的.click函數中將全局變量更改爲window.prompt()變量
- 20. 爲什麼我的全局變量不能正確解析?
- 21. 全局變量的函數
- 22. 函數內使用全局變量?
- 23. 爲什麼addEventListener函數無法獲取全局變量?
- 24. 如何使用參數更改函數中的全局變量
- 25. 爲什麼全局變量不能在Python的不同函數中工作?
- 26. 爲什麼全局變量不在swift 3中更新值?
- 27. 從函數更新全局變量
- 28. 函數沒有更新全局變量
- 29. 聲明爲全局變量的PHP變量在函數內不起作用
- 30. 如何修改函數內部的全局變量?
這是一個風險管理問題。這個全局變量可能會影響別的東西,而不會影響其他任何東西。 – Joe 2013-03-06 21:15:05
您應儘可能少使用全局變量,但如果它對您的代碼有用,並且您無法想出實現它的另一種方式,則可以這樣做。 – 2013-03-06 21:16:32
@Joe所以最好創建一個新的變量?例如test2 = test,然後根據需要更改test2? – parap 2013-03-06 21:16:57