函數(shù)
有三個函數(shù)可以把非數(shù)值轉換為數(shù)值: Number()、parseInt()和parseFloat()提针。
Number()可以用于任何數(shù)據(jù)類型命爬,另外兩個函數(shù)則專門用于把字符串轉換為數(shù)值。
Number
1.如果是Boolean值辐脖,true和false轉換為1和0.
2.如果是數(shù)字值饲宛,只是簡單的傳入和返回.
3.如果是null,返回0.
4.如果是undefined嗜价,返回NaN.
5.如果是字符串:
—1.字符串只包含數(shù)字(包括前面帶正負號的情況)艇抠,則轉換為十進制數(shù)值
—2.如果字符串中包含有效的十六進制格式,則將其轉換為相同大小的十進制整數(shù)值
—3.如果字符串是空的久锥,則將其轉換為0
—4.如果字符串包含除上述格式之外的額字符家淤,則轉換為NaN
6.如果是對象,則調(diào)用對象的valueOf()方法瑟由,然后按照前面的規(guī)則轉換為返回的值絮重。如果轉換
的結果是NaN,則調(diào)用對象的toString()方法歹苦,然后再次按照前面的規(guī)則轉換為返回的字符串值.
parseInt
parseInt()在轉換字符串時青伤,更多的是看其是否符合數(shù)值模式。它會忽略字符串前面的空格殴瘦,直至找到第一個非空格字符潮模。如果第一個字符不是數(shù)字字符或者負號,parseInt()就會返回NaN痴施,也就是說用 parseInt()轉換空字符串會返回NaN(Number()對空字符返回0)擎厢。如果第一個字符是數(shù)字字符,parseInt()會繼續(xù)解析第二個字符辣吃,直到解析完所有后續(xù)字符或者遇到了一個非數(shù)字字符动遭。
e.g:
const num1 = parseInt("1234whk"); /// 1234
const num2 = parseInt("") /// NaN
const num3 = parseInt("070") /// 70 默認十進制數(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