這篇文章主要介紹了JS 數位轉換實作方法,需要的朋友可以參考下。
JS 轉換資料為數字的方法有三類五種,包括:
•強制轉換,JS 的基本資料型別都以這樣轉換成對應的型別(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 和邏輯計算類似,但不捨去小數;除空字串外的不合法表達式傳回 NaN。
•parseInt 也是只保留整數部分;但是對不合法的表達式,取字串前面合法的整數(十進制、十六進制,不包括科學記數法)部分轉換,沒有則傳回 NaN。
•parseFloat 和 parseInt 類似,不同的是能辨識並保留小數部分,且不支援十六進位數。
以上就是本章的全部內容,更多相關教學請訪問JavaScript影片教學!