javascript中的關(guān)于類(lèi)型轉(zhuǎn)換的性能優(yōu)化
更新時(shí)間:2010年12月14日 21:47:33 作者:
類(lèi)型轉(zhuǎn)換是大家常犯的錯(cuò)誤,因?yàn)镴avaScript是動(dòng)態(tài)類(lèi)型語(yǔ)言,你不能指定變量的類(lèi)型。
1. 把數(shù)字轉(zhuǎn)換成字符串,應(yīng)用"" + 1,雖然看起來(lái)比較丑一點(diǎn),但事實(shí)上這個(gè)效率是最高的,性能上來(lái)說(shuō):("" + ) > String() > .toString() > new String(),盡量使用編譯時(shí)就能使用的內(nèi)部操作要比運(yùn)行時(shí)使用的用戶(hù)操作要快。String()屬于內(nèi)部函數(shù),所以速度很快,而.toString()要查詢(xún)?cè)椭械暮瘮?shù),所以速度遜色一些,new String()用于返回一個(gè)精確的副本。
2. 浮點(diǎn)數(shù)轉(zhuǎn)換成整型,這個(gè)更容易出錯(cuò),很多人喜歡使用parseInt(),其實(shí)parseInt()是用于將字符串轉(zhuǎn)換成數(shù)字,而不是浮點(diǎn)數(shù)和整型之間的轉(zhuǎn)換,我們應(yīng)該使用Math.floor()或者M(jìn)ath.round()。另外,和第二節(jié)的對(duì)象查找中的問(wèn)題不一樣,Math是內(nèi)部對(duì)象,所以Math.floor()其實(shí)并沒(méi)有多少查詢(xún)方法和調(diào)用的時(shí)間,速度是最快的。
3. 對(duì)于自定義的對(duì)象,如果定義了toString()方法來(lái)進(jìn)行類(lèi)型轉(zhuǎn)換的話,推薦顯式調(diào)用toString(),因?yàn)閮?nèi)部的操作在嘗試所有可能性之后,會(huì)嘗試對(duì)象的toString()方法嘗試能否轉(zhuǎn)化。
2. 浮點(diǎn)數(shù)轉(zhuǎn)換成整型,這個(gè)更容易出錯(cuò),很多人喜歡使用parseInt(),其實(shí)parseInt()是用于將字符串轉(zhuǎn)換成數(shù)字,而不是浮點(diǎn)數(shù)和整型之間的轉(zhuǎn)換,我們應(yīng)該使用Math.floor()或者M(jìn)ath.round()。另外,和第二節(jié)的對(duì)象查找中的問(wèn)題不一樣,Math是內(nèi)部對(duì)象,所以Math.floor()其實(shí)并沒(méi)有多少查詢(xún)方法和調(diào)用的時(shí)間,速度是最快的。
3. 對(duì)于自定義的對(duì)象,如果定義了toString()方法來(lái)進(jìn)行類(lèi)型轉(zhuǎn)換的話,推薦顯式調(diào)用toString(),因?yàn)閮?nèi)部的操作在嘗試所有可能性之后,會(huì)嘗試對(duì)象的toString()方法嘗試能否轉(zhuǎn)化。
您可能感興趣的文章:
- 優(yōu)化JavaScript腳本的性能的幾個(gè)注意事項(xiàng)
- JavaScript腳本性能的優(yōu)化方法
- JavaScript腳本性能優(yōu)化注意事項(xiàng)
- javascript模版引擎-tmpl的bug修復(fù)與性能優(yōu)化分析
- js性能優(yōu)化 如何更快速加載你的JavaScript頁(yè)面
- web性能優(yōu)化之javascript性能調(diào)優(yōu)
- 有關(guān)javascript的性能優(yōu)化 (repaint和reflow)
- JavaScript中的無(wú)阻塞加載性能優(yōu)化方案
- JavaScript性能優(yōu)化之小知識(shí)總結(jié)
相關(guān)文章
微信JS SDK接入的幾點(diǎn)注意事項(xiàng)(必看篇)
下面小編就為大家?guī)?lái)一篇微信JS SDK接入的幾點(diǎn)注意事項(xiàng)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06javascript實(shí)現(xiàn)繼承的簡(jiǎn)單實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)繼承的簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2015-07-07javascript 從if else 到 switch case 再到抽象
大家覺(jué)得在接手遺留代碼時(shí),見(jiàn)到什么東東是最讓人感到不耐煩的?復(fù)雜無(wú)比的 UML ?我覺(jué)得不是。2010-07-07javascript Array.remove() 數(shù)組刪除
下面的代碼主要是實(shí)現(xiàn)了,刪除數(shù)組中指定的值。2009-08-08用客戶(hù)端js實(shí)現(xiàn)帶省略號(hào)的分頁(yè)
帶省略號(hào)的分頁(yè)只有在服務(wù)器端才可以實(shí)現(xiàn),下面為大家介紹的是用js實(shí)現(xiàn)的帶省略號(hào)的分頁(yè),感興趣的朋友可以參考下哈,希望對(duì)你寫(xiě)出好的分頁(yè)有所幫助2013-04-04JavaScript面向?qū)ο髮?shí)現(xiàn)放大鏡案例
這篇文章主要為大家詳細(xì)介紹了JavaScript面向?qū)ο髮?shí)現(xiàn)放大鏡案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10SWFObject Flash js調(diào)用類(lèi)
一直想為 SWFObject 這個(gè)JS的類(lèi)庫(kù)寫(xiě)一個(gè)推薦帖,因?yàn)樗p便,同時(shí)功能強(qiáng)大,為我們的開(kāi)發(fā)帶來(lái)了很大的便捷。2008-07-07