一個非常簡單的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] ,發現沒有,就直接不往下遍歷了。親。。