JavaScript 里Number、parseFloat、parseInt的聯(lián)系與區(qū)別

在JavaScript中,有三個方法可以把非數(shù)值轉(zhuǎn)換成數(shù)值類型:Number()、parseInt()parseFloat()。
Number():可以用于任何數(shù)據(jù)類型;
parseInt() / parseFloat():主要針對把字符串轉(zhuǎn)換成數(shù)值。
他們有相通之處,但也有不同之處。此處做一個整理,方便查閱。

首先獻祭出一個例子圖,便于快速區(qū)別三個方法:
例子圖

Number() 的轉(zhuǎn)換規(guī)則

數(shù)據(jù)類型 規(guī)則
Boolean true和false將分別被轉(zhuǎn)換為1和0
Number 直接的傳入返回
Null 返回0
Undefined 返回NaN
String 遵循下列規(guī)則:
1. 只包含數(shù)字,將其轉(zhuǎn)換為十進制數(shù)值: “1” -> 1,“123” ->123,“011” -> 11(忽略前導零);
2. 只包含有效的浮點格式,將其轉(zhuǎn)換為對應(yīng)浮點數(shù)值: “1.1” -> 1.1,“03.14” ->3.14,“1.22.33” -> NaN;
3. 只包含有效的十六進制格式,將其轉(zhuǎn)換為相同大小的十進制整數(shù)值:“0xf” -> 15;
4. 空字符串(不包含任何字符或包含空格等空字符),則將其轉(zhuǎn)換為0:“” -> 0,“ ” -> 0
5. 除以上提及格式的字符,則將其轉(zhuǎn)換為NaN:“99 88” -> NaN“99abc” -> NaN;
Object 代碼測試時NaN,理論上還得查閱一番資料233

parseInt() / parseFloat() 的轉(zhuǎn)換規(guī)則

因為Number()方法轉(zhuǎn)換字符串的時候比較復雜,所以一般處理字符串比較常用的是parseInt() / parseFloat()。

parseInt() 的轉(zhuǎn)換規(guī)則是:
逐個解析字符串的字符,忽略前面空格,找到第一個非空格字符;若第一個字符不是數(shù)字字符或者負號,返回NaN;若第一個字符是數(shù)組字符,就繼續(xù)解析第二個字符,直到解析完所有后續(xù)字符串或者遇到了一個非數(shù)字字符。

parseFloat()的轉(zhuǎn)換規(guī)則和parseInt() 類似,區(qū)別在于parseFloat()能識別第一次出現(xiàn)的小數(shù)點。

parseInt() 方法還有基模式,可以把二進制、八進制、十六進制或其他任何進制的字符串轉(zhuǎn)換成整數(shù)。

(注意parseFloat()沒有基模式)。

var num2 = parseInt("AF");       //NaN  
var num1 = parseInt("AF",16);     //175  (按照十六進制解析)  
var num3 = parseInt("10",2);      //2  (按照二進制解析)  
var num4 = parseInt("sdasdad");    //NaN 

以上。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容