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()会返回整数。

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