出于性能目的,是“文件”;最好是作为一个全局变量,或者在局部重复数百次
For performance purposes, is "document" better off as one global variable or repeated hundreds of times locally?
我不确定Stack Overflow是否是适合这个特定问题的论坛,但这里开始。我正试图修剪脂肪从我的外部js文件。我偶然发现了这篇文章:
(http://oreilly.com/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html1我扫描了我的js文件,在各种函数中发现了250个文档的实例,例如
function first() {
document.getElementById('id1').style.display = 'none';
alert('Hi');
}
function second() {
document.getElementById('id2').innerHTML = 'foo bar';
alert('Hello');
}
//etc
我可以保留这250行左右,或者通过以下方式从我的文件中删除约1.7 kB(注意:任何函数中的其他变量都不命名为d):
var d = document;
function first() {
d.getElementById('id1').style.display = x;
alert('Hi');
}
function second() {
d.getElementById('id2').innerHTML = y;
alert('Hello');
}
//etc
我理解链接中的文章,但是对于页面速度来说,将文档初始化一次作为全局(假设没有刷新/重新加载),将其保存在内存中,然后为其他函数准备250次不是更好吗?
与所有性能问题一样,您必须在多个浏览器中进行测试,才能得出准确的结论。
document
本身是一个全局变量,所以我们认为在引用全局变量d
或全局变量document
时,运行时执行性能几乎没有区别。
这个结论由这个jsperf: http://jsperf.com/alias-document验证。
在作用域中,引用局部变量具有性能优势。局部变量的访问速度比全局变量快(它们在作用域搜索中更早被发现),因此如果您在同一作用域内重复访问全局变量,可以通过将该全局变量拉入函数中的局部变量来提高性能。一般来说,我不会使用别名,除非这是一段对性能非常敏感的代码。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在page.open()-PhantomJS中无法访问全局变量
- 使用全局变量来存储数字(JavaScript)
- 如何将变量声明为全局变量
- 在节点中创建文件全局变量
- 在Javascript中使用全局变量作为缓存是很好的
- 创建要在其他函数中使用的全局变量
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 声明一个没有'var'让它成为一个全局变量或者只是改变它的值
- 在嵌入页面之间传递javascript全局变量,或者从main传递到embed
- 如何在Angular2中触发一个应用范围的事件或者观察一个全局变量?
- 出于性能目的,是“文件”;最好是作为一个全局变量,或者在局部重复数百次