首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript optimization...global变量

Javascript optimization...global变量
EN

Stack Overflow用户
提问于 2010-02-26 09:03:46
回答 3查看 3.6K关注 0票数 2

我在做一个网络应用。关于javascript的性能,我有一个相当基本的问题。有时我需要一个全局变量来存储整个网站打开时使用的信息。

一个名为needs_saved的变量就是一个例子。判断页面是否需要保存是对还是错。我可能有另一个名为is_ie、ie_version或space_remaining的变量。

这些都是我需要在整个应用程序的各种函数中使用的变量。

现在,我知道全局变量是不好的,因为它们需要浏览器搜索每个级别的函数作用域。但是,我不知道是否有更好的方法来存储整个程序中需要的值。

我知道我可以创建一个名为'program_status‘的全局对象,并为其赋予is_ie、ie_version等属性……但是,这是否更好,因为它必须首先找到我的program_status对象(存储为全局变量),然后再找到内部属性?

也许我想太多了。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-26 09:08:22

你没什么好担心的。

全局变量对性能的影响很小。

不鼓励使用全局变量,因为它们会使代码更难维护。

在你的情况下,他们不会。

票数 6
EN

Stack Overflow用户

发布于 2010-02-26 09:13:21

全局变量的使用应该保持在最低限度,因为当全局变量太多时,全局名称空间就会受到污染,如果你的程序需要使用一些第三方库,这些库也会创建自己的全局变量,那么就很有可能会发生冲突。

创建一个对象来保存所有的全局状态是一个好主意,因为它限制了您需要在全局级别保留的标识符的数量。

要解决性能问题,您可以在需要多次访问该对象的任何范围内创建对该对象的本地引用:

因此,不是

代码语言:javascript
复制
if (globalState.isIe) { alert(globalState.ieMessage); }

你可以做到

代码语言:javascript
复制
var state = globalState;
if (state.isIe) { alert(state.ieMessage); }

如果只访问状态对象一次,则不需要执行此操作。在任何情况下,即使您从未这样做,性能损失也是可以忽略不计的。

票数 5
EN

Stack Overflow用户

发布于 2010-02-26 09:12:55

如果你担心性能问题,可以编写一些干净的代码,然后在上面运行分析器进行优化。我知道Safari和Google Chrome都有一个,很肯定Firebugs也有一个Firefox。见鬼,就连Internet Explorer8也有一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2338851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档