首页 » 编写高质量代码:改善JavaScript程序的188个建议 » 编写高质量代码:改善JavaScript程序的188个建议全文在线阅读

《编写高质量代码:改善JavaScript程序的188个建议》建议113:用局部变量访问集合元素

关灯直达底部

一般来说,访问任何类型的DOM,当同一个DOM属性或方法被访问一次以上时,最好使用一个局部变量缓存该DOM成员。当遍历一个集合时,第一个要优化的是将集合引用存储于局部变量,并在循环之外缓存length属性。然后,如果在循环体中多次访问同一个集合元素,那么使用局部变量缓存它。

在下面示例中,循环访问每个元素的3个属性。执行最慢的方法是每次都要访问全局变量document,优化后的代码缓存了一个指向集合的引用,执行最快的方法是将集合的当前元素存入局部变量。


//较慢方法

function collectionGlobal{

var coll=document.getElementsByTagName_r('p'),len=coll.length,name='';

for(var count=0;count<len;count++){

name=document.getElementsByTagName_r('p')[count].nodeName;

name=document.getElementsByTagName_r('p')[count].nodeType;

name=document.getElementsByTagName_r('p')[count].tagName;

}

return name;

};

//较快方法

function collectionLocal{

var coll=document.getElementsByTagName_r('p'),len=coll.length,name='';

for(var count=0;count<len;count++){

name=coll[count].nodeName;

name=coll[count].nodeType;

name=coll[count].tagName;

}

return name;

};

//最快方法

function collectionNodesLocal{

var coll=document.getElementsByTagName_r('p'),len=coll.length,name='',el=null;

for(var count=0;count<len;count++){

el=coll[count];

name=el.nodeName;

name=el.nodeType;

name=el.tagName;

}

return name;

};