循環是最浪費資源的一種流程。循環結構中一點小小的損耗都會被成倍放大,從而影響程序運行的效率。下面從以下幾個方面介紹如何優化循環結構,從而提高循環結構的執行效率。
(1)優化結構
循環結構常常與分支結構混用在一起,因此如何嵌套就非常講究了。例如,設計一個循環結構,結構內的循環語句只有在特定條件下才被執行。使用一個簡單的例子來演示,其正常思維結構如下:
var a=true;
for(var b=1;b<10;b++){//循環結構
if(a==true){//條件判斷
}
}
很明顯,在這個循環結構中if語句會被反覆執行。如果這個if語句是一個固定的條件檢測表達式,也就是說,如果if語句的條件不會受循環結構的影響,那麼不妨採用如下的結構來設計:
if(a==true){//條件判斷
for(var b=1;b<10;b++){//循環結構
}
}
這樣,if語句只被執行一次,如果if條件不成立,則直接省略for語句的執行,從而使程序的執行效率大大提高。但是,如果if條件表達式受循環結構的制約,就不能夠採用這種結構嵌套了。
(2)避免不必要的重複操作
在循環體內經常會存在不必要的損耗。例如,在下面的這個示例中,在循環內聲明數組,然後讀取數組元素的值。
for(var b=0;b<10;b++){
var a=new Array(1,2,3,4,5,6,7,8,9,10);
alert(a[b]);
}
顯然,在這個循環結構中,每循環一次都會重新定義數組,這樣的設計極大地浪費了資源。如果把這個數組放在循環體外會更加高效,例如:
var a=new Array(1,2,3,4,5,6,7,8,9,10);
for(var b=0;b<10;b++){
alert(a[b]);
}
在日常開發中,類似這樣不必要且重複的事情常常會浪費大量的系統資源,其實只要稍微留意,此類問題就會避免。
(3)妥善定義循環變量
對於for循環來說,它主要利用循環變量來控制整個結構的運行。當循環變量僅用於結構內部時,不妨在for語句中定義循環變量,這樣能夠優化循環結構。例如,計算1~100數字的和:
var s=0;
for(var i=0;i<=100;i++){
s+=i;
}
alert(s);
顯然下面的做法就不是很妥當,因為單獨定義循環變量,實際上增大了系統開銷。
var i=0;
var s=0;
for(i=0;i<=100;i++){
s+=i;
}
alert(s);