為什麼? 太好用了~~~類似的事情幾行就解決了!!
常會用到 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 設計模式 歐萊禮 出版
沒有留言:
張貼留言