出于性能目的,是“文件”;最好是作为一个全局变量,或者在局部重复数百次

For performance purposes, is "document" better off as one global variable or repeated hundreds of times locally?

本文关键字:或者 全局变量 一个 局部 百次 性能 于性能 文件      更新时间:2023-09-26

我不确定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验证。


在作用域中,引用局部变量具有性能优势。局部变量的访问速度比全局变量快(它们在作用域搜索中更早被发现),因此如果您在同一作用域内重复访问全局变量,可以通过将该全局变量拉入函数中的局部变量来提高性能。一般来说,我不会使用别名,除非这是一段对性能非常敏感的代码。