Number与parseInt的区别

Number与parseInt都是JS数值转换的函数。

  1. 首先从语义上来辨别两者的区别(这也是我记各种函数等内容的区别方法)。
Number() ,从翻译中看语义,number就是数字的之意。
它意味着无论给Number()传入任何参数,它可以把内容转换为数字

parseInt(),在英语上,`分析词句`之意,而 Int 则是我们定义变量时的整数类型。
显而易见,则是通过分析把词句转换为整型。
而在JS中,我们词句的数据类型,就是我们常见的`string`字符串
因此,parseInt()就是把字符串转换为整型之意

测试样例:
/*******************************Number********************************/
Number("123")       //123     字符串
Number("")          //0       字符串
Number(true)        //1       布尔
Number(null)        //0       对象
Number(1.1)         //1.1     浮点数
/*******************************parseInt********************************/
parseInt("123")  //123       字符串
parseInt("");     //NaN       字符串
parseInt(true)    //NaN       Boolean
parseInt(null)    //NaN       对象
parseInt(1.1)     //1         浮点数
  1. 在进行数值转换的过程中
    (1)Number有较为复杂的转换规则

如果是boolean值,true和false将分别转换为十进制数值
如果是数字值,只是简单的传入与返回
如果是null, 返回0
如果是undefined ,返回NaN
如果是字符串,遵循下列原则:
`1.只包含数字,八进制的数值将会被忽略前面的0,直接显示为十进制
如:“011” 应为 ‘9’但只能转换为‘11’;
2.浮点数可以转换为对应的浮点数值
3.如果是十六进制会转换为十进制值
4.如果字符串为空转换为0
5.其他转为NaN

(2) parseInt()在转换字符是更看其是否符合数值模式。它会忽略字符串前面的空格,知道找到第一个非空格字符。它是逐个解析字符的

e.g:parseInt("1234aaa")输出为“1234” 如果第一个字符是数字字符,会继续解析第二个字符,直到解析完所有的后续字符或者遇到了一个非数字字符。

parseInt()同样不具有解析八进制的能力,所以可以给parseInt()加入第二个参数

e.g:parseInt("AF",16); //175 后面还可以为2,8,10,16,默认情况下为10

posted @ 2018-04-02 14:42  吃饱撑着碎觉觉  阅读(300)  评论(0编辑  收藏  举报