如果需要在for循环中缓存长度值,我相信很多
程序猿都卷入了这个问题。
在JS
性能优化中,有一个常见的小优化,即
非缓存
对于(var i = 0;i < arr.length;i++){
…
}
缓存
VaR len = arr.length;
对于(var i = 0;i < i;i + +){
…
}
那么,我们是否应该放弃这种写作方式,还有另一种
情况必须加以利用。
看看例子:
复制代码代码如下所示:
var div = document.getelementsbytagname(div),我,DIV;
为(i = 0;i < divs.length;i++){
div = document.createelement(div);
document.body.appendchild(div);
}
上面的代码会导致无限循环:第一行代码将获得所有的div元素的节点列表,因为列表是动态的,只要有一个新的div添加到页面上,下一个周期将在divs.length评价,所以我和divs.length每次会增加,他们不平等的价值,创造了一个死循环。
所以如果你想遍历列表,最好是用长度
属性初始化二变量,然后比较迭代器的变量,
修改的代码如下:
复制代码代码如下所示:
var div = document.getelementsbytagname(div),我,DIV,Len;
为(i = 0;len = divs.length;我< len;i++){
div = document.createelement(div);
document.body.appendchild(div);
}
在这个例子中,Len的初始化,由于晶状体divs.length快照
保存在一个周期的开始,因此避免无限循环的一个例子,所以当需要迭代的列表,用这种
方法进行保险。
总结:
1、缓存长度值有助于性能优化。这是一个根据具体情况来判断的问题。一般来说,减少DOM访问是很好的。
2。当你需要
操作的节点列表,建议长度的值被缓存,以避免死循环。
以上内容全面
介绍了在for循环中缓存长度值的需要,希望您喜欢它。