字符串转数字测试--知识备忘
閑來無事,看了不少js的奇淫技巧,其實(shí)很多只是賣弄知識真正用上的并不多,為了滿足好奇心做了一個(gè)實(shí)驗(yàn)。
這個(gè)實(shí)驗(yàn)是關(guān)于將字符串轉(zhuǎn)成數(shù)字的,因?yàn)榍岸颂幚硇?shù)會(huì)出很多問題,所以一般都是后臺(tái)的同學(xué)把數(shù)據(jù)處理好了給前端,但是后端傳過來的是字符串,而這些字符串有些是帶小數(shù)點(diǎn)的,有些是整數(shù),傳過來有時(shí)候要做一些操作,字符串做不了所以要做類型轉(zhuǎn)換,即String --> Number。
對于類型轉(zhuǎn)換有常用的幾種方法,現(xiàn)在一起看看這幾種方法的速度如何?
字符串轉(zhuǎn)數(shù)字的方法有,Number,parseInt,parseFloat,還有隱式轉(zhuǎn)換加號(+)和算式表達(dá)(- 0)
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><p id="content"></p><script src="../lib/jquery.js"></script><script>$(function(){var str = '3.222';var res = [];//19.06ms console.time('test');for(var i = 0;i < 100000; i++){res.push(+str);}console.timeEnd('test');// 9.35ms console.time('Number');for(var i = 0;i < 100000; i++){res.push(Number(str));}console.timeEnd('Number');// 6.22ms console.time('parseInt');for(var i = 0;i < 100000; i++){res.push(parseInt(str));}console.timeEnd('parseInt');//8.84ms console.time('parseFloat');for(var i = 0;i < 100000; i++){res.push(parseFloat(str));}console.timeEnd('parseFloat');});</script> </body> </html>結(jié)論就是:parseInt > parseFloat > Number > 隱式類型,這里是加號(+)
測試的瀏覽器用的是firefox,chrome,發(fā)現(xiàn)firefox的差異性較大,chrome下Number和隱式轉(zhuǎn)換差不多,parseInt和parseFloat差不多。
雖然代碼寫起來很方便少了字符卻沒有帶來性能上的提升,所以說有些奇淫技巧不能亂用啊
其實(shí)這個(gè)實(shí)驗(yàn)的起源于+new Date(),看到這個(gè)技巧很雞凍,很風(fēng)騷,做了實(shí)驗(yàn)后才看清事物的本質(zhì)。
轉(zhuǎn)載于:https://www.cnblogs.com/masita/p/7426493.html
總結(jié)
以上是生活随笔為你收集整理的字符串转数字测试--知识备忘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的装饰器
- 下一篇: Eclipse rap 富客户端开发总结