函數(shù)
有三個函數(shù)可以把非數(shù)值轉(zhuǎn)換為數(shù)值: Number()、parseInt()和parseFloat()。
Number()可以用于任何數(shù)據(jù)類型,另外兩個函數(shù)則專門用于把字符串轉(zhuǎn)換為數(shù)值。
Number
1.如果是Boolean值,true和false轉(zhuǎn)換為1和0.
2.如果是數(shù)字值,只是簡單的傳入和返回.
3.如果是null,返回0.
4.如果是undefined,返回NaN.
5.如果是字符串:
—1.字符串只包含數(shù)字(包括前面帶正負(fù)號的情況),則轉(zhuǎn)換為十進(jìn)制數(shù)值
—2.如果字符串中包含有效的十六進(jìn)制格式,則將其轉(zhuǎn)換為相同大小的十進(jìn)制整數(shù)值
—3.如果字符串是空的,則將其轉(zhuǎn)換為0
—4.如果字符串包含除上述格式之外的額字符,則轉(zhuǎn)換為NaN
6.如果是對象,則調(diào)用對象的valueOf()方法,然后按照前面的規(guī)則轉(zhuǎn)換為返回的值。如果轉(zhuǎn)換
的結(jié)果是NaN,則調(diào)用對象的toString()方法,然后再次按照前面的規(guī)則轉(zhuǎn)換為返回的字符串值.
parseInt
parseInt()在轉(zhuǎn)換字符串時,更多的是看其是否符合數(shù)值模式。它會忽略字符串前面的空格,直至找到第一個非空格字符。如果第一個字符不是數(shù)字字符或者負(fù)號,parseInt()就會返回NaN,也就是說用 parseInt()轉(zhuǎn)換空字符串會返回NaN(Number()對空字符返回0)。如果第一個字符是數(shù)字字符,parseInt()會繼續(xù)解析第二個字符,直到解析完所有后續(xù)字符或者遇到了一個非數(shù)字字符。
e.g:
const num1 = parseInt("1234whk"); /// 1234
const num2 = parseInt("") /// NaN
const num3 = parseInt("070") /// 70 默認(rèn)十進(jìn)制數(shù)
parseFloat
與parseInt()函數(shù)類似,parseFloat()也是從第一個字符(位置0)開始解析每個字符。而且也是一直解析到字符串末尾,或者解析到遇見一個無效的浮點數(shù)數(shù)字位置。也就是說,字符串中的第一個小數(shù)點是有效的,而第二個小數(shù)點就是無效的了,因此它后面的字符串將被忽略。
e.g:
const num1 = parseFloat("1234wkh") /// 1234
const num2 = parseFloat("22.5") // 22.5
const num3 = parseFloat("22.23.2") // 22.23