1. 程式人生 > >parseInt()、Number()最清晰的區別分析

parseInt()、Number()最清晰的區別分析

parseInt()、Number()這兩個函式用到最多的地方就是把一個字串轉換成資料型別,那麼他們都有哪些區別?

1、parseInt()

parseInt()函式將給定的字串以指定的基數解析為整數。
parseInt(string,radix)
第二個引數表示使用的進位制,我們一般使用10進位制,也可能會有到8或者16進位制。為了避免對“0”和“0x”開頭的字串解析錯誤,各種javascript程式設計規範都規定必須要明確給出第二個引數的值,如parseInt(“123”,10).

parseInt('16', 8)  = 14
parseInt('10', 8)  = 8

parseInt
('16', 10) = 16 parseInt('10', 10) = 10 parseInt('16', 16) = 22 parseInt('10', 16) = 16

parseInt從頭解析string為整數,在遇到不能解析的字元時就返回已經解析的整數部分,如果第一個字元就不能解析,就直接返回NaN。

2、Number()

Number()在不用new操作符時,可以用來執行型別轉換。如果無法轉換為數字,就返回NaN。
像“123a”,parseInt()返回是123,Number()返回是NaN。

不同型別的字串使用這兩個函式的轉換區別:

// 當字串是由數字組成的時候 他們轉換的數字一樣的沒有差別  
let numStr = '123' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123 // 當字串是由字母組成的時候 let numStr = 'abc' console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //NaN // 當字串是由數字和字母組成的時候 let numStr = '123a' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //NaN
// 當字串是由0和數字 let numStr = '0123' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //NaN // **當字串包含小數點** let numStr = '123.456' console.log(parseInt(numStr)) //123 console.log(Number(numStr)) //123.456 // **當字串為null時** let numStr = null console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //0 // **當字串為''(空)時** let numStr = '' console.log(parseInt(numStr)) //NaN console.log(Number(numStr)) //0

綜上 使用這兩個函式的時候要根據自己的具體需求和字串可能出現的型別來選擇使用。