詳解ECMAscript提供的型別轉換方法
阿新 • • 發佈:2019-01-07
ECMAscript提供了兩種把非數字的原始值轉換為數字的方法即parseInt()和parseFloat()第一個方法可以把所有的值轉換成整數,第二個可以把所有的值轉換成浮點數,但是大前提只有對字串型別的呼叫這個方法,才可以正確執行,其他型別將會返回NaN。parseInt()在判斷字串是否是數字之前,parseInt()和parseFloat()都會仔細分析該字串。parseInt首先檢視位置0處的字元,判斷它是否是一個有效字元,如果不是將返回NaN,不再繼續往後執行。但是如果該字元是有效數字將繼續檢視1位置的字元,進行同樣的測試,這一過程持續到發現非有效數字的字元為止。此時parseInt()將該字元之前的字串轉化為數字(轉化為數字之後返回查詢到的數字)。例如,如果要把字串 "12345red" 轉換成整數,那麼 parseInt() 將返回 12345,因為當它檢查到字元 r 時,就會停止檢測過程。 字串中包含的數字字面量會被正確轉換為數字,比如 "0xA" 會被正確轉換為數字 10。不過,字串 "22.5" 將被轉換成 22,因為對於整數來說,小數點是無效字元。一些示例如下:var iNum1 = parseInt("12345red"); //返回 12345var iNum1 = parseInt("0xA"); //返回 10var iNum1 = parseInt("56.9"); //返回 56var iNum1 = parseInt("red"); //返回 NaNparseFloat()parseFloat() 方法與 parseInt() 方法的處理方式相似,從位置 0 開始檢視每個字元,直到找到第一個非有效 的字元為止,然後把該字元之前的字串轉換成整數。不過,對於這個方法來說,第一個出現的小數點是有效字元。如果有兩個小數點,第二個小數點將被看作無效的。parseFloat() 會把這個小數點之前的字元轉換成數字。這意味著字串 "11.22.33" 將被解析成 11.22。下面是使用 parseFloat() 方法的一些示例:var fNum1 = parseFloat("12345red"); //返回 12345var fNum2 = parseFloat("0xA"); //返回 NaNvar fNum3 = parseFloat("11.2"); //返回 11.2var fNum4 = parseFloat("11.22.33"); //返回 11.22var fNum5 = parseFloat("0102"); //返回 102var fNum1 = parseFloat("red"); //返回 NaN