Joh*_*ter 1 javascript performance
我正在制作一个webapp。我有一个关于javascript性能的基本问题。有时我需要一个全局变量来存储整个网站打开时使用的信息。
一个示例是名为needs_saved的变量。说页面是否需要保存是对还是错。我可能还有另一个名为is_ie的变量,即ie_version或space_remaining。
这些都是我在整个应用程序的各种功能中所需的变量。
现在,我知道全局变量是不好的,因为它们要求浏览器搜索函数作用域的每个级别。但是,我不知道是否有更好的方法来存储整个程序所需的值。
我知道我可以创建一个名为“ program_status”的全局对象,并为其赋予属性is_ie,ie_version等。但这会更好,因为它首先必须找到我的program_status对象(存储为全局变量),然后内部财产?
也许我想得太多了。
谢谢
全局变量的使用应该保持在最低限度的原因是因为全局命名空间在有很多时会受到污染,并且如果您的程序需要使用一些也创建自己的全局变量的 3rd 方库,则很有可能发生冲突。
创建单个对象来保存所有全局状态是一个好主意,因为它限制了需要在全局级别保留的标识符数量。
为了解决性能问题,您可以在需要多次访问它的任何范围内创建对该对象的本地引用:
所以代替
if (globalState.isIe) { alert(globalState.ieMessage); }
Run Code Online (Sandbox Code Playgroud)
你可以做
var state = globalState;
if (state.isIe) { alert(state.ieMessage); }
Run Code Online (Sandbox Code Playgroud)
如果您只访问状态对象一次,则不需要这样做。在任何情况下,即使您从不这样做,性能损失也可以忽略不计。