1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
在數(shù)字極大或是極小時(shí)候,會(huì)自動(dòng)采用科學(xué)計(jì)數(shù)法時(shí)候,parseInt是會(huì)有問(wèn)題的。
console.log(parseInt(6.022e23)); // 6
console.log(Math.trunc(6.022e23)); // 6.022e+23
雖然功能上可能對(duì)于部分結(jié)果一致,但是其作用是不一樣的。
parseInt在實(shí)際運(yùn)用上經(jīng)常會(huì)出一些問(wèn)題,比如0X或是0開(kāi)頭就會(huì)出現(xiàn)解析為十六進(jìn)制或八進(jìn)制的問(wèn)題,雖然你可能本意是轉(zhuǎn)換為十進(jìn)制,但是后端傳遞值或是用戶輸入并不會(huì)和你想象的一樣。
Math.trunc在ES6更多的是為了補(bǔ)足floor,round,ceil這一系列的方法,以及可想而知,在Math.trunc適用的領(lǐng)域,其性能會(huì)比parseInt好不少。
從另外一個(gè)角度上來(lái)說(shuō),如果給你一個(gè)能夠完成所有功能的函數(shù),但是需要傳遞很多不同參數(shù),或是命名功能分類清晰的多種函數(shù),去完成一個(gè)項(xiàng)目,你會(huì)選擇哪種呢?
個(gè)人而言絕對(duì)選擇是后一種。
添加回答
舉報(bào)