提高js執行效率的幾個常用技巧

antzone發表於2017-03-17

在一些比較短小的程式碼中,可能執行效率顯得不會那麼重要,但是如果是一段龐大的程式碼,那就不同了,執行效率直接影響到整體的執行效果或者說使用者體驗度,對於程式大牛來說,提高程式效率的方式不得而知,這裡介紹一下日常編碼中,經常用到的一些提高效率的小技巧,希望能夠給大家帶來幫助。

一.低版本IE瀏覽器使用jion()函式連線字串:

在低版本的IE瀏覽器,如IE6和IE7中,使用join()函式進行字串連線的效率要比使用加號(+)高,例如:

[JavaScript] 純文字檢視 複製程式碼
["螞蟻部落",'市南區',"新銳科技"].join()
"螞蟻部落"+"市南區"+"新銳科技"

上面的執行效率在低版本的IE瀏覽器中更高。

二.數字取整移位操作效率更高:

[JavaScript] 純文字檢視 複製程式碼
1.1>>0

以上程式碼取整的效率要比其他方式要高。

三.直接量方式建立陣列和物件效率更高:

1.建立陣列:

[JavaScript] 純文字檢視 複製程式碼
var theArray=["螞蟻部落","antzone","青島市南區"];
var theArray=new Array("螞蟻部落","antzone","青島市南區");

第一種建立陣列的效率要比第二種高。

2.建立物件:

[JavaScript] 純文字檢視 複製程式碼
var obj={
  webName:"螞蟻部落",
  address:"青島市南區",
  age:2
}
var object={}; 
object.webName="螞蟻部落"; 
object.address="青島市南區";
object.age=2;

第一種建立物件的方式,要比第二種效率要高。

四.鍵值對應取值的效率要比switch case效率要高:

使用類似物件的鍵值對方式取值,要比使用switch case方式效率要高。

關於switch case可以參閱javascript switch一章節。 

五.關於迴圈語句:

在比較常用的for(in)、while和for迴圈語句中,for(in)語句的效率是最差的,所以要儘量避免使用,後面兩個的效率算是中等。

六.全域性變數和區域性變數:

區域性變數的效率要比全域性變數高,因為全域性變數其實是全域性物件的成員,而區域性變數是放在函式的棧當中的。 

七.儘量不要使用eval():

因為eval()執行時,相當於再次呼叫js解釋引擎對內容進行處理,會消耗大量的時間,這種情況儘量使用閉包來實現相應的操作。

八.追加字串操作:

[JavaScript] 純文字檢視 複製程式碼
str+=anotherStr;
str=str+anotherStr;

要儘量使用第一種,避免使用第二種。

九.數字轉換:

很多朋友可能喜歡使用parseInt()函式將浮點數轉換為整數,雖然能夠實現功能,但是可能效率就不夠完美了,因為此函式的初衷是將字串轉換為數字,而不是浮點數到整數之間的轉換,所以建議使用Math.floor()或者Math.round()函式替代。

十.對於字串的替換:

對於字串的替換,或者迴圈遍歷等操作,建議使用正規表示式,因為js本身的迴圈速度並不快,而正規表示式的操作是使用更為底層的語言實現的,所以效率要更高一些。

十一.關於定時器函式的使用:

setTimeout()函式雖然通過遞迴的方式也能夠完成無線迴圈方式,但是儘量使用setInterval()函式,因為每次setTimeout()函式執行都會重新建立一個定時器,效率降低。

相關文章