为什么全局变量被认为是不良做法?(的node.js)

C1D*_*C1D 1 javascript node.js

我目前面临一个问题,我有两个模块,我称之为需要能够修改相同的变量.
我决定创建一个名为的全局变量global.APP_NAME = {}并存储我需要的变量.

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

我只创建一个变量,不应该与其他任何东西发生碰撞,因为它是我的应用程序的名称.

Phi*_*ipp 12

几乎所有编程语言都认为全局变量是一种反模式,因为它们很难跟踪和调试代码.

  • 浏览代码时,您永远不知道哪个函数设置或使用全局变量.当所有变量都是本地变量或传递给函数时,您可以确定函数的副作用是有限的.
  • 全局变量在远处工作.拧入全局值可能会在应用程序的完全不同部分产生意外影响.当您调试由此引起的错误时,您将很难找到变量更改为错误值的位置.
  • 全局变量共享一个命名空间,因此您可能会无意中重用它们,尽管您不打算这样做.
  • 很难说全局变量有多重要.你永远不知道它是仅仅由两个函数使用,还是它的值在整个地方都很重要.
  • ......以及更多原因......

如果有两个共享数据的模块,则应创建一个包含该数据的对象,并将其显式传递给需要它的每个函数(并且只传递那些实际执行的函数).