【发布时间】:2013-07-04 15:14:24
【问题描述】:
使用 window.onload=function(){}; 有什么真正的优势吗?超过 onload=function(){}; ?我知道 window.onload 看起来更合适,但这不是我选择它的好理由,尤其是它比 onload 更长/更慢。
经过一些耗时的搜索和测试,这 2 个是仅有的 2 个兼容浏览器的方法,测试(在相对较新的 Chrome/Firefox 版本和 5.5 到 9 的 IE 上)包括:
window.onload // works in all tested browsers
onload // works in all tested browsers, faster than window.onload
document.onreadystatechange // works twice in some browsers, once in some others, could be confusing
window.onpageshow // works in chrome and firefox, not in IE
window.onreadystatechange // doesn't work
document.onload // doesn't work
document.onpageshow // doesn't work
window.document.onload // doesn't work
我可以找到这篇文章,这是最适合我的问题的文章之一:
http://perfectionkills.com/onloadfunction-considered-harmful/
它指出 ECMA-262 5th edition 的严格模式("use strict"; 我不打算在我的项目中使用)最终可能导致某些浏览器不兼容加载(Firefox 中的 ReferenceError和歌剧)。
所以问题是:除了“use strict;”之外,使用直接加载分配是否有任何真正的缺点?一?我需要信息而不是一些无法解释的意见。
谢谢
注意:我在问这个问题之前进行了搜索(我知道这看起来有点经典),我能找到的最接近的问题是关于 window.onload 与 、window.onload 的其他替代方案等
编辑:我创建了这个测试用例onload vs window.onload,它证明了加载速度有多快。我真的会进行这种微优化,因为为什么不呢?它们有时很酷。
【问题讨论】:
-
onload 和 window.onload 是我所知道的同义词
-
"onload ... faster than window.onload" - 你如何测试这个?我很难认为您甚至可以衡量两者之间的性能差异。实际代码中肯定没有性能差异。
-
嗯,我的意思是 分配给 onload 更快,我有时在不同的浏览器上尝试在 jsperf 上,结果根本没有争议。这是一个新的测试用例jsperf.com/onload-vs-window-onload 我知道它仍然被认为是一种微优化,但它也是你可以学习一次并始终应用的东西
-
您的新测试似乎没有测试任何东西(您只是在引用该属性),自然这两个测试对我来说完全返回相同的结果(在 Chrome 28 中)。但是,正如您在上面所说,赋值操作确实会产生不同的结果,
onload在这方面似乎比window.onload稍微快一些。 jsperf.com/onload-vs-window-onload/2 虽然,这是一个 micro^2 优化。 :) -
我的错,我发错链接jsperf.com/onload-window-onload
标签: javascript onload