2013-03-06 54 views
-1

我正在編寫JavaScript代碼,並被告知我不應該在函數中更改全局變量。爲什麼這會成爲一個問題?有沒有任何標準的替代品?爲什麼我不應該更改函數內的全局變量?

+1

這是一個風險管理問題。這個全局變量可能會影響別的東西,而不會影響其他任何東西。 – Joe 2013-03-06 21:15:05

+0

您應儘可能少使用全局變量,但如果它對您的代碼有用,並且您無法想出實現它的另一種方式,則可以這樣做。 – 2013-03-06 21:16:32

+0

@Joe所以最好創建一個新的變量?例如test2 = test,然後根據需要更改test2? – parap 2013-03-06 21:16:57

回答

3

在任何語言中,從函數中更改全局變量通常會使函數的輸出不確定,這會使代碼變得很難並且經常會導致不需要的副作用。因此,如果可以通過正確確定變量的範圍來避免它,如果沒有看到代碼,很難提供幫助。

名稱破壞也是一個問題。但是,通過命名您的全局變量可以很容易地解決這個問題。最後,正如你可能知道的那樣,因爲你的問題確實會說「爲什麼我不應該改變一個全局變量」,只讀全局變量(常量)並不是一個真正的問題,因爲它們不會改變,因此也不會有問題任何副作用。

+0

謝謝。這有幫助。 – parap 2013-03-06 21:22:50

0

See this Cartoon

全局變量是線程安全系統的反命題。你不應該擁有它們,但是如果你擁有它們,只有一個線程應該擁有/改變它們。他們應該始終通過服務層來處理。

+0

你能定義線程嗎? – parap 2013-03-06 21:52:17

相關問題