一般來說,訪問任何類型的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;
};