js中parseInt函數淺談

來源:互聯網
上載者:User

從很熱門的執行個體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)就是2進位的結果:16。

下面我來說說沒有指定進位單位的時候,預設是10進位,但:如果是裡面的Number是0開頭的就認為是8進位的,如果是0x開頭的就認為是16進位的。
parseInt("10")==>parseInt("010",10)===>10parseInt("010")==>parseInt("010",8)==>8parseInt("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.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.