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