學(xué)習(xí)目標(biāo):
parseInt()、Number()這兩個(gè)函數(shù)用到最多的地方就是把一個(gè)字符串轉(zhuǎn)換成數(shù)據(jù)類型,那么他們都有哪些區(qū)別?
學(xué)習(xí)內(nèi)容:
parseInt()函數(shù)將給定的字符串以指定的基數(shù)解析為整數(shù)。parseInt(string,radix)第二個(gè)參數(shù)表示使用的進(jìn)制,我們一般使用10進(jìn)制,也可能會有到8或者16進(jìn)制。為了避免對“0”和“0x”開頭的字符串解析錯(cuò)誤,各種 javascript 編程規(guī)范都規(guī)定必須要明確給出第二個(gè)參數(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ù),在遇到不能解析的字符時(shí)就返回已經(jīng)解析的整數(shù)部分,如果第一個(gè)字符就不能解析,就直接返回NaN。
Number() 在不用 new 操作符時(shí),可以用來執(zhí)行類型轉(zhuǎn)換。如果無法轉(zhuǎn)換為數(shù)字,就返回 NaN。 像“123a”,parseInt() 返回是123,Number() 返回是 NaN,不同類型的字符串使用這兩個(gè)函數(shù)的轉(zhuǎn)換區(qū)別:
// 當(dāng)字符串是由數(shù)字組成的時(shí)候 他們轉(zhuǎn)換的數(shù)字一樣的沒有差別
let numStr = '123'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123
// 當(dāng)字符串是由字母組成的時(shí)候
let numStr = 'abc'
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //NaN
// 當(dāng)字符串是由數(shù)字和字母組成的時(shí)候
let numStr = '123a'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //NaN
// 當(dāng)字符串是由0和數(shù)字
let numStr = '0123'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123
// **當(dāng)字符串包含小數(shù)點(diǎn)**
let numStr = '123.456'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123.456
// **當(dāng)字符串為null時(shí)**
let numStr = null
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //0
// **當(dāng)字符串為''(空)時(shí)**
let numStr = ''
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //0
學(xué)習(xí)總結(jié):
1、當(dāng)字符串是由數(shù)字組成的時(shí)候 他們轉(zhuǎn)換的數(shù)字一樣的沒有差別;如果字符串不含數(shù)字全是字母,這兩個(gè)方法也都只是返回 NaN 結(jié)果;當(dāng)字符串是由0和數(shù)字組成時(shí),都是解析除0外的全部數(shù)字;
2、 當(dāng)字符串是由數(shù)字和字母組成的時(shí)候 ①字母在開頭,這兩個(gè)方法也都只是返回 NaN 結(jié)果②字母不在開頭 Number 方法返回NaN,pareseInt 方法返回字母之前的數(shù)據(jù)
3 、parseInt 對于非 String 類型的值要先轉(zhuǎn)換為 String 類型再操作