JS 數字轉換研究總結

來源:互聯網
上載者:User

JS 轉換資料為數位方法有三類五種,包括:

•強制轉換,JS 的基礎資料型別 (Elementary Data Type)都這以這樣轉換成對應的類型(Number(v))
•原生函數,這兩個函數有不一樣的結果(parseInt(v,radix)、parseFloat(v))
•隱式轉換,在執行的時候 JS 會轉換變數為對應類型(位計算,數學計算)
轉換的原值也可以簡單分為三類:對象、特殊值、字串。

JS 中的特殊值包括以下幾個。

•undefined,未定義,當變數聲明但沒賦值或者一個對象不存在的屬性的值就是這個了。
•NaN/Infinity,這是兩個頑固的“數字”(typeof == number),分別表示非數字和無限大的數。貌似沒什麼用,轉換成數字失敗的話,傳回值基本是NaN。
•null,當成零值用的對象(typeof == object)。
•true/false,布爾值,表示真、假,等價於1/0。
對於字串,根據內容還可以進行細分。根據 JS 數字運算式,可以分為合法和非法。合法的數字有幾種不同的分類方法:

•符號:正號、負號、無符號
•進位:八進位、十進位、十六進位
•科學記號標記法
•小數、整數,以及小數的簡寫
根據上面的分類,我製作了一個 Demo,用來測試不同方法、數值轉換後的結果。下面的是在 chrome 下的轉換。



看結果只有位計算能把任何值轉換為有限數(isFinite),數學計算和強制轉換的結果是一樣的。

特殊值的轉換和原值以及轉換方法都有關係。parseInt/parseFloat 全部轉換失敗,返回 NaN。

•NaN/undefined 用其它方法全轉換成 NaN;
•Infinity 被 parseInt 轉換成 NaN,剩下的方法不改變它的值;
•null/false/true 不能被 parseInt/parseFloat 轉換,返回 NaN。
對字串的轉換剖析主要看轉換方法,但全部方法都不支援八進位表示的數字,而是當成對應的十進位數。

•邏輯計算轉換除負十六進位數外的合法運算式,並捨去小數部分;不合法的運算式返回零。
•數學計算/Number 和邏輯計算類似,但不捨去小數;除Null 字元串外的不合法運算式返回 NaN。
•parseInt 也是只保留整數部分;但是對不合法的運算式,取字串前面合法的整數(十進位、十六進位,不包括科學記號標記法)部分轉換,沒有則返回 NaN。
•parseFloat 和 parseInt 類似,不同的是能識別並保留小數部分,並且不支援十六進位數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.