我在javascript中解析得不是很好,但你是否称之为微优化?
for(var j=0;j < document.getElementsByTagName('a').length; j++)
{
//...
}
var Elements = document.getElementsByTagName('a');
var ElementsLength = Elements.length;
for(var j=0;j < ElementsLength ; j++)
{
//...
}
var Elements = document.getElementsByTagName('a');
for(var j=0;j < Elements.length; j++)
{
//...
}
答案 0 :(得分:3)
在第一种情况下,是否真的在每个循环周期中调用document.getElementByTagName?
是
浏览器是否尝试优化我们编写的javascript?
它不会在功能上更改它。调用一次函数和每次循环调用它之间有区别;也许你意味着每次都要调用这个函数。 “优化”离开实际上正在改变程序的作用。
考虑到收集永远不会改变,第二和第三种情况之间是否存在差异?
不是功能性的,但表现明智是的。访问length
属性比从简单变量读取数字要多一些开销。可能不是你真正注意到的,但它就在那里。这也是一个无法优化的情况,因为Elements.length
可能在每次迭代时发生变化,这会使程序的行为不同。一个好的优化者可能能够检测属性是否在不断变化和优化,以防它确定不会;但我不知道有多少实现真的这样做,因为这可能变得非常复杂。