1 var alldivs = document.getElementsByTagName('div');
2 for (var i = 0; i < alldivs.length; i++) {
3 document.body.appendChild(document.createElement('div'));
4
5 }
/*函数是一个死循环,每次迭代都执行查询操作*/
/*集合拷贝到数组,循环数据比循环集合效率高*/
function toArray(coll) { for (var i = 0, a = [], len = coll.length; i < len; i++) { a[i] = coll[i]; } return a; }
var coll = document.getElementsByTagName('div'); var len = coll.length; var arr = toArray(coll); function loopCollection() { for (var count = 0; count < coll.length; count++) { /*代码处理*/ } } function loopCollection(coll) { for (var count = 0; count < arr.length; count++) { /*代码处理*/ } }
/*读取元素集合的length属性会引发集合进行更新,优化方法很简单,将集合长度缓存为局部变量*/
function loopCollection() { var alldivs = document.getElementsByTagName('div'); var len = coll.length; for (var count = 0; count < coll.length; count++) { /*代码处理*/ } } /*
1 当同一个Dom的属性和方法需要多次访问时,最好用一个局部变量缓存此成员
2 遍历一个集合时,首要的优化原则是把集合混存在局部变量中,并把length缓存在集合外部
总结*/