2013-03-06 53 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

相关问题