为什么不改变函数内部的全局变量?

Why Shouldn't I Change a Global Variable Inside a Function?

本文关键字:全局变量 内部 改变 函数 为什么不      更新时间:2023-09-26

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

在任何语言中,更改函数的全局变量通常会使函数的输出不确定,这使得遵循代码变得困难,并且通常会导致不必要的副作用。因此,如果可以的话,您应该通过适当地限定变量的作用域来避免它,如果没有看到代码

,就很难提供帮助。

Name clobbing也是一个问题。然而,这可以很容易地通过给全局变量设置命名空间来弥补。

最后,正如你可能知道的,因为你的问题确实说"为什么我不应该改变一个全局变量",只读全局变量(常量)并不是一个真正的问题,因为它们不会改变,因此没有任何副作用。

看此卡通

全局变量是线程安全系统的对立面。你不应该有它们,但如果你有它们,只有一个线程应该拥有/更改它们。它们应该总是通过服务层来处理。