App下載

JS中parseInt()和Number()區(qū)別

猿友 2021-02-20 18:08:26 瀏覽數(shù) (6058)
反饋

學習目標:

parseInt()、Number()這兩個函數(shù)用到最多的地方就是把一個字符串轉(zhuǎn)換成數(shù)據(jù)類型,那么他們都有哪些區(qū)別?

學習內(nèi)容:

parseInt()函數(shù)將給定的字符串以指定的基數(shù)解析為整數(shù)。parseInt(string,radix)第二個參數(shù)表示使用的進制,我們一般使用10進制,也可能會有到8或者16進制。為了避免對“0”和“0x”開頭的字符串解析錯誤,各種 javascript 編程規(guī)范都規(guī)定必須要明確給出第二個參數(shù)的值,如 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 為整數(shù),在遇到不能解析的字符時就返回已經(jīng)解析的整數(shù)部分,如果第一個字符就不能解析,就直接返回NaN。

Number() 在不用 new 操作符時,可以用來執(zhí)行類型轉(zhuǎn)換。如果無法轉(zhuǎn)換為數(shù)字,就返回 NaN。 像“123a”,parseInt() 返回是123,Number() 返回是 NaN,不同類型的字符串使用這兩個函數(shù)的轉(zhuǎn)換區(qū)別:

// 當字符串是由數(shù)字組成的時候 他們轉(zhuǎn)換的數(shù)字一樣的沒有差別  
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

// 當字符串是由數(shù)字和字母組成的時候 
let numStr = '123a'
console.log(parseInt(numStr))   //123
console.log(Number(numStr))		//NaN

// 當字符串是由0和數(shù)字
let numStr = '0123'
console.log(parseInt(numStr))   //123
console.log(Number(numStr))		//123

// **當字符串包含小數(shù)點**
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

學習總結(jié):

1、當字符串是由數(shù)字組成的時候 他們轉(zhuǎn)換的數(shù)字一樣的沒有差別;如果字符串不含數(shù)字全是字母,這兩個方法也都只是返回 NaN 結(jié)果;當字符串是由0和數(shù)字組成時,都是解析除0外的全部數(shù)字;
2、 當字符串是由數(shù)字和字母組成的時候 ①字母在開頭,這兩個方法也都只是返回 NaN 結(jié)果②字母不在開頭 Number 方法返回NaN,pareseInt 方法返回字母之前的數(shù)據(jù)
3 、parseInt 對于非 String 類型的值要先轉(zhuǎn)換為 String 類型再操作


0 人點贊