js中parseInt函式的解析

2021-06-25 18:05:11 字數 1766 閱讀 5788

首先還是從很熱門的例項parseint("09")==0說起。

parseint(number,type)這個函式後面如果不跟第2個引數來表示進製的話,預設是10進製。

比如說parseint("010",10)就是10進製的結果:10,parseint("010",2)就是2進製的結果:2,parseint("010",8)就是8進製的結果:8,parseint("010",16)就是16進製制的結果:16。

下面我來說說沒有指定進製單位的時候,預設是10進製,但:如果是裡面的number是0開頭的就認為是8進製的,如果是0x開頭的就認為是16進製制的。

parseint("10")==>parseint("010",10)===>10

parseint("010")==>parseint("010",8)==>8

parseint("0x10")==>parseint("010",16)==>16.

到這裡很順利.

許多事情不是想的那麼順利,比如說如果number不是我們給的正常數字又怎麼解釋呢。查了些資料,是這樣說的:

parseint(number)如果中間的number遇到不是數字(0-9)的就中斷往下解析,就只取不是數字之前的值去運算:

比如parseint("100x"),就相當於parseint("100")===》parseint("100",10)==>100,

又如parseint("0100x")===>parseint("0100")===>parseint("100",8)===>64.

到這裡我們似乎無視了乙個就是16進製制中的有個x,它也不是數字,是不是遇到x也無視了呢。嘗試下了發現在這個特殊處理了下,比如

parseint("0x10")===>parseint("10",16)===>16和最上面的結果相符,但卻和我剛說的,不是字元就自動不解析就應該理解成parseint("0")相違背。

這裡就需要注意下,parseint裡面的number是這樣的,當如果第乙個不是0且不是字元就認為是10進製,一切照舊執行,遇到字母就停下來。又當如果是第乙個是0,後面那個就需要注意了,如果是x就繼續往下走,這裡的x不代表數值,只能和前面的0一起組成0x代表16進製制的單位,後面的才按上面我們講的遇到非數字停止解析的規則來。比如parseint("0xt")==>parseint("0x")==>parseint("",16)就是nan了。

總結下,parseint(number)裡面的值:

如果是第一位不是0就遇到字母就停止解析,並把字母前面的值作為10進製去解析,如果第乙個就是字母那麼值就是空,空成了nan,比如:

parseint("a")==>parseint("",10)==>nan.

parseint("10a")==>parseint("10")==>parseint("10",10)==>10;

如果第一位是0,且第2位不是x也和上面一樣遇到字母就停止解析,並把字母前面的值作為8進製去解析,比如:

parseint("0a")==>parseint("0")==>parseint("0",10)==>0.

ps:這個有點特殊,因為0a被解析成了0,還不具備看做是8進製的結構,下面那個就明顯了。

parseint("010a")==>parseint("010")==>parseint("10",8)==>8;

如果第一位是0,且第2位是x那後面也和上面一樣遇到字母就停止解析,並把字母前面的值作為16進製制去解析,比如:

parseint("0xt")==>parseint("",16)==>nan.

parseint("0x12t")==>parseint("12",16)==>18.

關於JS中的parseInt 099 函式解惑

對於parseint 01 到parseint 07 都能得到正確的結果,但如果是parseint 08 或parseint 09 則返回0 首先看parseint語法 parseint string,radix 其中string為要轉換的字串,radix為二進位制,八進位制,十六進製制或十進位制。...

js中的parseInt()用法

var num parseint demo radix demo 是你要轉換的那個數 var demo 123 var num parseint demo console.log typeof num num number 123 var demo true var num parseint dem...

JS深入理解 探索parseInt函式

看到這樣一道題目 1 2 3 map parseint 執行結果是什麼?為什麼?執行結果是 1,nan,nan 我們將題目的 轉換一下 1 2 3 map item,index 相當於 parseint 1 0 1 why?parseint 2 1 nan why?parseint 3 2 nan ...