2015年1月3日 星期六

[JS] for 的一些寫法參考筆記

寫到任何程式語言,9成以上會使用到 for 這個指令,
為什麼? 太好用了~~~類似的事情幾行就解決了!!

常會用到 for 的一個情況,
某個陣列將他一一戴入。

一般直覺我們會這麼寫。


var arr=['a','b','c','d'];

for(i=0;i<arr.length;i++){
   alert(arr[i]);
}

非常直覺,任何人都可以秒懂這在寫什麼

但是如果站在效能上來看,有個問題是......

for 迴圈每跑一次 就會去檢查 arr 這個陣列的數量,

除非arr這個陣列會在 for 迴圈中變更,否則大多建議使用下面方法,

var arr=['a','b','c','d'];
var cnt=arr.length;

for(i=0;i<cnt;i++){
    //省略
}


統整一下,將cnt一起寫進 for 裡

var arr=['a','b','c','d'];

for(i=0,cnt=arr.length;i<cnt;i++){
     //省略
}

這樣好像省了不少事,效能也會大幅上升(如果陣列迴圈夠複雜的話)
但有沒有更往下一步呢?

據說 i+=1 效能會比 i++ 還好!

var arr=['a','b','c','d'];

for(i=0,cnt=arr.length;i<cnt;i+=1){
     //省略
}

那還有嗎?
還有一步,如果我們已知道陣列大小,與迴圈流程是線性前進的話,
將 ++ 往上累加 改成 -- 遞減

var arr=['a','b','c','d'];

for(i=arr.length;i-=1){
     //省略
}

但是此方法可能會造成,與原先預期的結果有所落差(順序顛倒)

這幾種方法是邊搜尋邊看書筆記起來的,提供給大家參考看看。

真的是參考看看就好,還是要已自己的寫法習慣去思考哪些需要.....

參考資料:
[1] Google Search "javascript performance"
[2] Javascript 設計模式  歐萊禮 出版

沒有留言:

張貼留言