JS-Learning|數值轉換之Number()、parseInt()和parseFloat()

把非數值轉換爲數值有三個函數:Number()parseInt()parseFloat(),規則如下:

Number()

如果是Boolean值,true和false將分別被轉換爲1和0;
如果是數字值,只是簡單的傳入和返回;
如果是null值,返回0
如果是undefined,返回NaN
如果是字符串,遵守以下規則

  • 如果字符串只包含數字,則將其轉換爲十進制數值,即“1”會變成1,“123”會變成123,“012”會變成12;
  • 如果字符串中包含有效的浮點格式,如“1.1”,則將其轉換爲對應的浮點數值;
  • 如果字符串中包含有效的十六進制格式,例如“0xf”,則將其轉換爲相同大小的十進制整數值;
  • 如果字符串是空的,則將其轉換成0;
  • 如果字符串中包含除上述格式之外的字符,則將其轉換爲NaN。

如果是對象,則調用對象的valueOf()方法,然後按照前面的規則轉換返回的值。如果轉換的結果是NaN,則調用對象的toString()方法,然後再依次按照前面的規則轉換返回的字符串值。

parseInt()

parseInt()函數在轉換字符串時,更多的是看其是否符合數值模式。它會忽略字符串前面的空格,直到找到第一個非空格字符。如果第一個字符不是數字字符或者負號parseInt()就會返回NaN

parseInt()轉換空字符串會返回NaN(Number()對空字符返回0);

如果第一個字符是數字字符,parseInt()會繼續解析第二個字符,直到解析到所有後續字符或者遇到了一個非數字字符。
parseInt()第二個參數 可以指定轉換時使用的基數(即多少進制)。

parseFloat()

parseInt()函數相似,parseFloat()也是從第一個字符開始解析每個字符,一直解析到字符串末尾,或者解析到遇見一個無效的浮點數字字符爲止。也就是說,字符串的第一個小數點是有效的,而第二個小數點就是無效的了。

parseFloat() 始終會忽略前導的零,只解析十進制。

注意⚠️:如果字符串包含的是一個可解析爲整數的數(沒有小數點或小數點後都是零),parseFloat()會返回整數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章