詳解js中Number()、parseInt()和parseFloat()的區(qū)別
一:Number()
如果是Boolean值,true和false值將分別被轉(zhuǎn)換為1和0。
如果是數(shù)字值,只是簡(jiǎn)單的傳入和返回。
如果是null值,返回0。
如果是undefined,返回NaN。
如果是字符串:
a. 如果字符串中只包含數(shù)字時(shí),將其轉(zhuǎn)換為十進(jìn)制數(shù)值,忽略前導(dǎo)0
b. 如果字符串中包含有效浮點(diǎn)格式,如“1.1”,將其轉(zhuǎn)換為對(duì)應(yīng)的浮點(diǎn)數(shù)字,忽略前導(dǎo)0
c. 如果字符串中包含有效的十六進(jìn)制格式,如“0xf”,將其轉(zhuǎn)換為相同大小的十進(jìn)制數(shù)值
d. 如果字符串為空,將其轉(zhuǎn)換為0
e. 如果字符串中包含除上述格式之外的字符,則將其轉(zhuǎn)換為NaN
如果是對(duì)象,則調(diào)用對(duì)象的valueOf()方法,然后依照前面的規(guī)則轉(zhuǎn)換返回的值。如果轉(zhuǎn)換的結(jié)果是NaN,則調(diào)用對(duì)象的toString()方法,然后再依照前面的規(guī)則轉(zhuǎn)換返回的字符串值。
例:
var num1 = Number("Hello world"); //NaN var num2 = Number(""); //0 var num3 = Number("0000011"); //11
二:parseInt()
處理整數(shù)的時(shí)候parseInt()更常用。parseInt()函數(shù)在轉(zhuǎn)換字符串時(shí),會(huì)忽略字符串前面的空格,知道找到第一個(gè)非空格字符。
如果第一個(gè)字符不是數(shù)字或者負(fù)號(hào),parseInt() 就會(huì)返回NaN,同樣的,用parseInt() 轉(zhuǎn)換空字符串也會(huì)返回NaN。
如果第一個(gè)字符是數(shù)字字符,parseInt() 會(huì)繼續(xù)解析第二個(gè)字符,直到解析完所有后續(xù)字符串或者遇到了一個(gè)非數(shù)字字符。
parseInt()方法還有基模式,可以把二進(jìn)制、八進(jìn)制、十六進(jìn)制或其他任何進(jìn)制的字符串轉(zhuǎn)換成整數(shù)。
基是由parseInt()方法的第二個(gè)參數(shù)指定的,所以要解析十六進(jìn)制的值,當(dāng)然,對(duì)二進(jìn)制、八進(jìn)制,甚至十進(jìn)制(默認(rèn)模式),都可以這樣調(diào)用parseInt()方法。
例:
var num1 = parseInt("AF",16); //175 var num2 = parseInt("AF"); //NaN var num3 = parseInt("10",2); //2 (按照二進(jìn)制解析) var num4 = parseInt("sdasdad"); //NaN
三:parseFloat()
與parseInt() 函數(shù)類(lèi)似,parseFloat() 也是從第一個(gè)字符(位置0)開(kāi)始解析每一個(gè)字符。也是一直解析到字符串末尾,或者解析到遇見(jiàn)一個(gè)無(wú)效的浮點(diǎn)數(shù)字字符為止。
也就是說(shuō),字符串中第一個(gè)小數(shù)點(diǎn)是有效的,而第二個(gè)小數(shù)點(diǎn)就是無(wú)效的了,它后面的字符串將被忽略。
parseFloat() 只解析十進(jìn)制,因此它沒(méi)有第二個(gè)參數(shù)指定基數(shù)的用法
如果字符串中包含的是一個(gè)可解析為正數(shù)的數(shù)(沒(méi)有小數(shù)點(diǎn),或者小數(shù)點(diǎn)后都是零),parseFloat() 會(huì)返回整數(shù)。
例:
var num1 = parseFloat("123AF"); //123 var num2 = parseFloat("0xA"); //0 var num3 = parseFloat("22.5"); //22.5 var num4 = parseFloat("22.3.56"); //22.3 var num5 = parseFloat("0908.5"); //908.5
parseInt() 和parseFloat() 的區(qū)別在于:
- parseFloat() 所解析的字符串中第一個(gè)小數(shù)點(diǎn)是有效的,而parseInt() 遇到小數(shù)點(diǎn)會(huì)停止解析,因?yàn)樾?shù)點(diǎn)并不是有效的數(shù)字字符。
- parseFloat() 始終會(huì)忽略前導(dǎo)的零,十六進(jìn)制格式的字符串始終會(huì)被轉(zhuǎn)換成0,而parseInt() 第二個(gè)參數(shù)可以設(shè)置基數(shù),按照這個(gè)基數(shù)的進(jìn)制來(lái)轉(zhuǎn)換。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)團(tuán)購(gòu)或秒殺批量倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)團(tuán)購(gòu)或秒殺批量倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07OpenLayers實(shí)現(xiàn)點(diǎn)要素圖層的聚合顯示的方法
在很多情況下,點(diǎn)要素圖層中的要素?cái)?shù)量可能會(huì)成百上千,如果一個(gè)點(diǎn)要素圖層中的點(diǎn)數(shù)量很多,我們就會(huì)采取圖層聚合的方式對(duì)其進(jìn)行處理,本文就來(lái)介紹一下,感興趣的可以了解一下2021-09-09javascript globalStorage類(lèi)代碼
非IE瀏覽器“userdata”的解決方案2009-06-06JavaScript對(duì)象類(lèi)型轉(zhuǎn)換的分類(lèi)及步驟詳解
這篇文章主要為大家介紹了JavaScript對(duì)象類(lèi)型轉(zhuǎn)換的分類(lèi)及步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05《javascript設(shè)計(jì)模式》學(xué)習(xí)筆記一:Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)對(duì)象成員的定義分析
這篇文章主要介紹了《javascript設(shè)計(jì)模式》學(xué)習(xí)筆記Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)對(duì)象成員的定義,結(jié)合實(shí)例形式分析了《javascript設(shè)計(jì)模式》中JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)的原理、定義、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04JavaScript塊級(jí)作用域綁定的實(shí)現(xiàn)流程
這篇文章主要給大家介紹了關(guān)于JavaScript塊級(jí)作用域綁定的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-12-12解析JavaScript中delete操作符不能刪除的對(duì)象
這篇文章主要是對(duì)JavaScript中delete操作符不能刪除的對(duì)象進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12