JS浅谈Number数值转换

740 阅读1分钟

Number()转换

Number()转换

转换结果

转换结果

由以上结果可以看出,浏览器在解析Number()转换时遵循以下规则:

基本规则

  1. 如果被转换的是布尔值,true和false分别被转换为1和0两个数字。

  2. 如果被转换的是数值,则只是进行传入和返回。

  3. 如果被转换的是null,返回的是0.

  4. 如果被转换的是undefined,返回的是NaN。

字符串

  1. 字符串只包含数字(包含正负号),则将其转换为十进制数值。

  2. 字符串包含符合规则的浮点数字,则将其转换为对应的浮点数值。

  3. 字符串包含符合规则的十六进制格式,则将其转换为同等大小的十进制整数值。

  4. 字符串为空,则转换为0。

  5. 字符串中包含除以上规则外的字符,转换为NaN。

对象

对象的转换,会调用valueOf()方法,再用前面的规则返回相应的值。如果转换的结果是NaN,则可以调用toString()方法,然后再用前面的规则转换得到的字符串。

注:

如果转换的是Date对象返回的是此刻到1970年1月1日0点0分0秒0毫秒的毫秒数。

总结

Number()在进行数值转换时,转换规则很复杂,尤其对于字符串而言。

补充

在转换字符串为数值时常常使用parseInt()函数和parseFloat()函数,他们的规则相对于Number()更加简单,规则更加自由一些。

参考书籍

JavaScript 高级程序设计