Number与parseInt都是JS数值转换的函数。
- 首先从语义上来辨别两者的区别(这也是我记各种函数等内容的区别方法)。
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)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
网友评论