Javascript 为什么不应该';我不能更改函数中的全局变量吗?

Javascript 为什么不应该';我不能更改函数中的全局变量吗?,javascript,global-variables,Javascript,Global Variables,我正在编写JavaScript代码,并被告知不应更改函数中的全局变量。为什么这会是一个问题?有什么标准的替代方法吗?在任何语言中,更改函数的全局变量通常会使函数的输出不确定,这会使遵循代码变得困难,并经常导致不必要的副作用。因此,如果可以的话,您应该通过适当地确定变量的范围来避免它,因为如果不查看代码,就很难提供帮助 辱骂他人也是一个问题。然而,这可以通过给全局变量命名来轻松解决 最后,正如您可能知道的,因为您的问题是“为什么我不应该更改全局变量”,只读全局变量(常量)实际上不是问题,因为它们不

我正在编写JavaScript代码,并被告知不应更改函数中的全局变量。为什么这会是一个问题?有什么标准的替代方法吗?

在任何语言中,更改函数的全局变量通常会使函数的输出不确定,这会使遵循代码变得困难,并经常导致不必要的副作用。因此,如果可以的话,您应该通过适当地确定变量的范围来避免它,因为如果不查看代码,就很难提供帮助

辱骂他人也是一个问题。然而,这可以通过给全局变量命名来轻松解决

最后,正如您可能知道的,因为您的问题是“为什么我不应该更改全局变量”,只读全局变量(常量)实际上不是问题,因为它们不会更改,因此没有任何副作用。


全局变量是线程安全系统的反命题。您不应该拥有它们,但如果您拥有它们,则只有一个线程应该拥有/更改它们。应始终通过服务层处理这些问题。

这是一个风险管理问题。该全局变量可能会影响其他内容,而不会影响其他内容。您应该使用尽可能少的全局变量,但如果它对您的代码有用,并且您无法想出其他方法来实现它,您可以这样做。@Joe所以最好创建一个新变量?e、 g.test2=测试,然后根据需要更改test2?@jcoat如果不希望产生副作用,那么分配变量是绝对无用的。如果需要,那么必须完成分配。@jcoat每种情况都是不同的,这与应用程序的设计有关,没有针对每种情况的单一解决方案。显示要从中删除全局变量的代码。是否可以定义线程?