我正在读一篇文章:
Optimizing JavaScript for Execution Speed
还有一节说:
使用此代码:
for (var i = 0; (p = document.getElementsByTagName("P")[i]); i++)
代替:
nl = document.getElementsByTagName("P"); for (var i = 0; i < nl.length; i++) { p = nl[i]; }
出于性能原因.
解决方法
如果从C#这样的语言看它,你会期望第二个语句更有效,但C#不是解释器语言.
正如指南所述:您的浏览器已经过优化,可以从实时列表中检索正确的节点,并且比从您在变量中定义的“缓存”中检索它们要快得多.此外,您必须确定每次迭代的长度,这可能会导致一些性能损失.
解释器语言与编译语言的反应不同,它们以不同方式进行优化.