JS中的關於型別轉換的效能優化
阿新 • • 發佈:2019-02-06
型別轉換是大家常犯的錯誤,因為JavaScript是動態型別語言,你不能指定變數的型別。
1.把數字轉換成字串,應用"" + 1
,雖然看起來比較醜一點,但事實上這個效率是最高的,效能上來說:("" + ) > String() > .toString() > new String()
,
儘量使用編譯時就能使用的內部操作要比執行時使用的使用者操作要快。String()
屬於內部函式,所以速度很快,而.toString()
要查詢原型中的函式,所以速度遜色一些,new String()
用於返回一個精確的副本。
2.浮點數轉換成整型,這個更容易出錯,很多人喜歡使用parseInt()
,其實
parseInt()
是用於將字串轉換成數字,而不是浮點數和整型之間的轉換,我們應該使用Math.floor()
或者Math.round()
。另外,和第二節的物件查詢中的問題不一樣,Math
是內部物件,所以Math.floor()
其實並沒有多少查詢方法和呼叫的時間,速度是最快的。
3.對於自定義的物件,如果定義了toString()
方法來進行型別轉換的話,推薦顯式呼叫toString()
,因為內部的操作在嘗試所有可能性之後,會嘗試物件的toString()方法嘗試能否轉化。