Number()、parseInt()、parseFloat()的區別
Number():
Number()的強制類型轉換與parseInt()和parseFloat()方法的處理方式相似,只是它轉換的是整個值,而不是部分值,如果有無效字符,該方法將返回NaN。
例如
如果要把字符串 "12.34 "轉換成整數,那麽Number()將返回12.34
如果要把字符串 "1234blue "轉換成整數,那麽Number()將返回NaN,因為當它檢測到字符b時,就會停止檢測過程。
parseInt():
parseInt()方法首先查看位置0處的 字符,判斷它是否是個有效數字;如果不是,該方法將返回NaN,不再繼續執行其他操作。但如果該字符是有效數字,該方法將查看位置1處的字符,進行同樣的 測試。這一過程將持續到發現非有效數字的字符為止,此時parseInt()將把該字符之前的字符串轉換成數字。
例如
如果要把字符串 "12.34 "轉換成整數,那麽parseInt()將返回12,因為當它檢測到字符"."時,就會停止檢測過程。
如果要把字符串 "1234blue "轉換成整數,那麽parseInt()將返回1234,因為當它檢測到字符b時,就會停止檢測過程。
parseInt()方法還有基模式,可以把二進制、八進制、十六進制或其他任何進制的字符串轉換成整數。
基是由parseInt()方法的第二個參數指定的,所以要解析十六進制的值,當然,對二進制、八進制,甚至十進制(默認模式),都可以這樣調用parseInt()方法。
如果十進制數包含前導0,那麽最好采用基數10,這樣才不會意外地得到八進制的值。
二、parseFloat()
與parseInt()方法的處理方式相似,從位置0開始查看每個字符,直到找到第一個非有效的字符為止,然後把該字 符之前的字符串轉換成數字。
不過,對於這個方法來說,第一個出現的小數點是有效字符。如果有兩個小數點,第二個小數點將被看作無效的, parseFloat
()方法會把這個小數點之前的字符串轉換成數字。這意味著字符串 "22.34.5 "將被解析成22.34。
使用parseFloat()方法的另一不同之處在於,字符串必須以十進制形式表示浮點數,而不能用八進制形式或十六進制形式。
該方法會忽略前導0,所以八進制數0908將被解析為908。對於十六進制數0xA,該方法將返回NaN,因為在浮點數中,x不是有效字符。
此外,parseFloat()也沒有基模式。
Number()、parseInt()、parseFloat()的區別