js中parseInt函數(shù)淺談
從很熱門的實(shí)例parseInt("09")==0說起。
parseInt(number,type)這個(gè)函數(shù)后面如果不跟第2個(gè)參數(shù)來表示進(jìn)制的話,默認(rèn)是10進(jìn)制。
比如說parseInt("010",10)就是10進(jìn)制的結(jié)果:10,
parseInt("010",2)就是2進(jìn)制的結(jié)果:2,
parseInt("010",8)就是8進(jìn)制的結(jié)果:8,
parseInt("010",16)就是2進(jìn)制的結(jié)果:16。
下面我來說說沒有指定進(jìn)制單位的時(shí)候,默認(rèn)是10進(jìn)制,但:如果是里面的Number是0開頭的就認(rèn)為是8進(jìn)制的,如果是0x開頭的就認(rèn)為是16進(jìn)制的。
parseInt("10")==>parseInt("010",10)===>10parseInt("010")==>parseInt("010",8)==>8parseInt("0x10")==>parseInt("010",16)==>16.
到這里很順利.
許多事情不是想的那么順利,比如說如果Number不是我們給的正常數(shù)字又怎么解釋呢。查了些資料,是這樣說的:
parseInt(Number)如果中間的Number遇到不是數(shù)字(0-9)的就中斷往下解析,就只取不是數(shù)字之前的值去運(yùn)算:比如parseInt("100x"),就相當(dāng)于parseInt("100")===》parseInt("100",10)==>100,又如parseInt("0100x")===>parseInt("0100")===>parseInt("100",8)===>64.
到這里我們似乎無視了一個(gè)就是16進(jìn)制中的有個(gè)x,它也不是數(shù)字,是不是遇到x也無視了呢。嘗試下了發(fā)現(xiàn)在這個(gè)特殊處理了下,
比如parseInt("0x10")===>parseInt("10",16)===>16和最上面的結(jié)果相符,但卻和我剛說的,不是字符就自動(dòng)不解析就應(yīng)該理解成parseInt("0")相違背。
這里就需要注意下,parseInt里面的Number是這樣的,當(dāng)如果第一個(gè)不是0且不是字符就認(rèn)為是10進(jìn)制,一切照舊執(zhí)行,遇到字母就停下來。又當(dāng)如果是第一個(gè)是0,后面那個(gè)就需要注意了,如果是x就繼續(xù)往下走,這里的x不代表數(shù)值,只能和前面的0一起組成0x代表16進(jìn)制的單位,后面的才按上面我們講的遇到非數(shù)字停止解析的規(guī)則來。比如parseInt("0xt")==>parseInt("0x")==>parseInt("",16)就是NaN了。
總結(jié)下,parseInt(Number)里面的值:如果是第一位不是0就遇到字母就停止解析,并把字母前面的值作為10進(jìn)制去解析,如果第一個(gè)就是字母那么值就是空,空成了NaN,
比如:parseInt("a")==>parseInt("",10)==>NaN.parseInt("10a")==>parseInt("10")==>parseInt("10",10)==>10;
如果第一位是0,且第2位不是x也和上面一樣遇到字母就停止解析,并把字母前面的值作為8進(jìn)制去解析,比如:parseInt("0a")==>parseInt("0")==>parseInt("0",10)==>0.PS:這個(gè)有點(diǎn)特殊,因?yàn)?a被解析成了0,還不具備看做是8進(jìn)制的結(jié)構(gòu),下面那個(gè)就明顯了。
parseInt("010a")==>parseInt("010")==>parseInt("10",8)==>8;如果第一位是0,且第2位是x那后面也和上面一樣遇到字母就停止解析,并把字母前面的值作為16進(jìn)制去解析,比如:parseInt("0xt")==>parseInt("",16)==>NaN.parseInt("0x12t")==>parseInt("12",16)==>18.
- js parseInt的陷阱分析小結(jié)
- 關(guān)于javascript中的parseInt使用技巧
- js parsefloat parseint 轉(zhuǎn)換函數(shù)
- javascript中的parseInt和parseFloat區(qū)別
- javascript中parseInt()函數(shù)的定義和用法分析
- javascript parseInt() 函數(shù)的進(jìn)制轉(zhuǎn)換注意細(xì)節(jié)
- JavaScript的parseInt 取整使用
- JS實(shí)現(xiàn)手寫parseInt的方法示例
- javascript parseInt 大改造
- Js中parseInt的使用及注意事項(xiàng)
相關(guān)文章
使用Script元素發(fā)送JSONP請(qǐng)求的方法
下面小編就為大家?guī)硪黄褂肧cript元素發(fā)送JSONP請(qǐng)求的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06在JavaScript中操作數(shù)組之map()方法的使用
這篇文章主要介紹了在JavaScript中操作數(shù)組之map()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript ES6中的簡(jiǎn)寫語(yǔ)法總結(jié)與使用技巧
我們?cè)诳淳帉懙腏S ES6代碼時(shí)經(jīng)常會(huì)看到許多簡(jiǎn)寫的語(yǔ)法,本篇文章就為大家一一介紹JavaScript ES6可以簡(jiǎn)寫的語(yǔ)法2018-12-12關(guān)于JS字符串函數(shù)String.replace()
本篇介紹關(guān)于JS字符串函數(shù)String.replace(),有需要的朋友參考一下。2013-04-04javascript之typeof、instanceof操作符使用探討
typeof和instanceof這兩個(gè)操作符時(shí)不時(shí)就會(huì)用到,堪稱必用,這兩個(gè)操作符或許是javascript中最大的設(shè)計(jì)缺陷,因?yàn)閹缀醪豢赡軓乃麄兡抢锏玫较胍慕Y(jié)果2013-05-05javascript向flash swf文件傳遞參數(shù)值注意細(xì)節(jié)
如何使用javascript向SWF文件傳遞參數(shù)?在網(wǎng)上找了一個(gè)完整的教程,很有啟發(fā)性和實(shí)用性,如下是完整實(shí)現(xiàn)的步驟,需要的朋友可以參考下2012-12-12Javascript學(xué)習(xí)筆記之?dāng)?shù)組的遍歷和 length 屬性
我們一般用循環(huán)來遍歷數(shù)組,而循環(huán)一直是 JavaScript 性能問題的常見來源,有時(shí)循環(huán)用得不好會(huì)嚴(yán)重降低代碼的運(yùn)行速度。數(shù)組的屬性可以分為三種:length屬性,索引屬性,其他屬性.和普通對(duì)象相比,數(shù)組對(duì)象特殊的地方就是它的length屬性和索引屬性。2014-11-11