讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議113:用局部變量訪問集合元素 >

建議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;

};