【发布时间】:2015-06-26 06:05:25
【问题描述】:
是的,这是另一个关于全局变量的话题。我已经搜索了很多关于它们的信息。但大多数主题只是关于为什么不使用全局变量,我确信我不应该,我更想知道如何不使用它们,我仍然不确定。
我正在做一个项目,它可以创造奇迹,但我目前使用了大约 50 个全局变量,而且这个数字还在不断上升。现在我已经把东西分成了多个 .js 文件。像 load_chunks.js、load_images.js、render_map.js、player_actions.js、input.js 一样,根据它们的用途来传播功能。而且我已经把所有的全局变量都放在了 settings.js 中。
目前我使用这些全局变量的原因如下:
1.基于加载后变化不大或根本没有变化的其他一些全局变量进行计算。通过这样做一次并将其存储在全局变量中,我不再需要再次重复计算。如果我没有将它存储在(全局)变量中,Javascript 将不得不每秒进行多次计算,在某些情况下甚至每秒数千次。
2. 当很多函数都需要全局变量时。就像有这个世界变量一样,我用它来保存世界外观的数据。这个变量是一个多维数组。例如世界[y][x]。 Load_chunks.js 会向该变量添加更多数据,或者如果您移动得太远,则删除数据。在 render_map.js 中也需要这个变量来创建地图,在 player_action.js 中也需要它来查看您是否可以踩到该特定位置。
3.设置;因此,除非我在脚本中更改它们,否则变量中的数字将保持不变。我没有通过我的脚本,在长时间搜索并思考数字是什么后手动更改数字,而是将该数字放入 1 个变量中,并在我的脚本中多次调用该变量。在某些情况下,其他地方也需要这些变量。
我还想提一下,我不使用类,也许正是因为这个原因,我从来没有使用过全局变量...?
那么我该如何摆脱我的全局变量,还是不应该? 我希望您可以向我展示或为我编写一个脚本示例(或指向它的链接),说明我应该如何做。这是我学习最快的方法。
【问题讨论】:
-
全局变量表明您的架构可能过于紧密耦合,从而阻碍模块化和轻松重用不同的函数......您可能需要重构,因此不需要/更少需要共享变量......如果适当的话,还可以利用自然变量范围并将这些变量作为闭包放在函数中,子函数可以看到它们
-
@vidit 请reconsider 添加架构标签。你的拒绝原因就是我的例子,标签应该有助于描述问题是关于的,而不仅仅是它包含的内容。
-
添加了架构标签,不确定是否应该删除其他标签。嗯,当我必须发布一些代码时,我要在哪里做呢?一个新的答案,还是编辑主帖?
标签: javascript variables architecture global