一尘不染

为什么将全局变量视为不良做法?(node.js)

node.js

我目前遇到一个问题,我有两个我需要调用的模块,它们需要能够修改相同的变量。
我决定创建一个名为的全局变量,global.APP_NAME = {}并在其中存储所需的变量。

但是我一直在阅读,使用全局变量是一种不好的做法。为什么?

我仅创建一个变量,该变量不应与其他任何冲突,因为它是我的应用程序的名称。


阅读 240

收藏
2020-07-07

共1个答案

一尘不染

几乎在所有编程语言中,全局变量都被视为反模式,因为它们使遵循和调试代码变得非常困难。

  • 浏览代码时,您永远不知道哪个函数设置或使用全局变量。当所有变量都是局部变量或传递给函数时,可以确保该函数的副作用是有限的。
  • 全局变量距离很远。使用全局值拧紧可能会在应用程序的完全不同的部分中产生意想不到的效果。当您调试由此引起的错误时,将很难找出变量更改为错误值的位置。
  • 全局变量共享一个名称空间,因此您可以无意中重用它们,尽管您不打算这样做。
  • 很难说出全局变量的重要性。您永远不会知道它是否仅由两个函数使用,或者它的值是否在整个地方都很重要。
  • …还有更多原因…

当您有两个共享数据的模块时,应使用该数据创建一个对象,并将其显式传递给需要它的每个函数(仅实际需要的那些函数)。

2020-07-07