javascript如果寫一個for循環

一個非常簡單的for循環,也有不少的學問。假如,我們的目標是要遍歷一個dom結點的所有孩子結點,然後打印結點的內容。

 

在javascript下,我剛學習的時間,我會這樣寫。

 

for(var i = 0; i<d.childNodes.length;i++){

  var item = d.childNodes[i];

  //dosomething about item…        

}

這個時候,細心的同學,已經發現瞭。每次計算.length的性能是非常差的。 然後第一版本的優化如下

 

for(var i = 0,len = d.childNodes.length ; i< len ;i++){

  var item = d.childNodes[i];

  //dosomething about item…        

}

有沒有更好的優化方案呢?

 

for(var i = 0; item = d.childNodes[i] ;i++){

  //dosomething about item…        

}

發現瞭沒有。 用一句item=d.childNodes[i], 即完成瞭判斷,又完成瞭賦值,看上去,是不是很舒服呢?而且不需要計算length。 性能也是不是更好呢?

 

 

 

註間:這種方法,適合數字類型的數組的遍歷循環, 如果一個數組的索引是這樣的 

 

 

 

var a = [1,3,11];

面對這樣的數組,可一定要小心瞭, 它找a[1] ,發現沒有,就直接不往下遍歷瞭。親。。

 

 

發佈留言