Number()转换
转换结果
由以上结果可以看出,浏览器在解析Number()转换时遵循以下规则:
基本规则
-
如果被转换的是布尔值,true和false分别被转换为1和0两个数字。
-
如果被转换的是数值,则只是进行传入和返回。
-
如果被转换的是null,返回的是0.
-
如果被转换的是undefined,返回的是NaN。
字符串
-
字符串只包含数字(包含正负号),则将其转换为十进制数值。
-
字符串包含符合规则的浮点数字,则将其转换为对应的浮点数值。
-
字符串包含符合规则的十六进制格式,则将其转换为同等大小的十进制整数值。
-
字符串为空,则转换为0。
-
字符串中包含除以上规则外的字符,转换为NaN。
对象
对象的转换,会调用valueOf()方法,再用前面的规则返回相应的值。如果转换的结果是NaN,则可以调用toString()方法,然后再用前面的规则转换得到的字符串。
注:
如果转换的是Date对象返回的是此刻到1970年1月1日0点0分0秒0毫秒的毫秒数。
总结
Number()在进行数值转换时,转换规则很复杂,尤其对于字符串而言。
补充
在转换字符串为数值时常常使用parseInt()函数和parseFloat()函数,他们的规则相对于Number()更加简单,规则更加自由一些。
参考书籍
JavaScript 高级程序设计