亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

es6中Number.parseInt和Math.trunc使用和功能上有什么區別嗎?

es6中Number.parseInt和Math.trunc使用和功能上有什么區別嗎?

手掌心 2018-12-19 13:15:03
在MDN上兩個函數的解釋分別為:Math.trunc() 方法會將數字的小數部分去掉,只保留整數部分parseInt() 函數解析一個字符串參數,并返回一個指定基數的整數 (數學系統的基礎)。寫了一點測試代碼:console.log(Number.parseInt(-1.20));console.log(Math.trunc(-1.20));console.log(Number.parseInt(100.20));console.log(Math.trunc(100.20));console.log(Number.parseInt('中文'));console.log(Math.trunc('中文'));運行結果完全一致:查了一下各自的api,Number.parseInt功能上完全覆蓋Math.trunc,ES6中增加這個Math.trunc有什么用?
查看完整描述

1 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

在數字極大或是極小時候,會自動采用科學計數法時候,parseInt是會有問題的。


console.log(parseInt(6.022e23)); // 6

console.log(Math.trunc(6.022e23)); // 6.022e+23

雖然功能上可能對于部分結果一致,但是其作用是不一樣的。

parseInt在實際運用上經常會出一些問題,比如0X或是0開頭就會出現解析為十六進制或八進制的問題,雖然你可能本意是轉換為十進制,但是后端傳遞值或是用戶輸入并不會和你想象的一樣。

Math.trunc在ES6更多的是為了補足floor,round,ceil這一系列的方法,以及可想而知,在Math.trunc適用的領域,其性能會比parseInt好不少。


從另外一個角度上來說,如果給你一個能夠完成所有功能的函數,但是需要傳遞很多不同參數,或是命名功能分類清晰的多種函數,去完成一個項目,你會選擇哪種呢?

個人而言絕對選擇是后一種。


查看完整回答
反對 回復 2019-01-26
  • 1 回答
  • 0 關注
  • 958 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號