美文网首页
Number与parseInt的区别

Number与parseInt的区别

作者: 努力努力的老姑娘 | 来源:发表于2018-04-02 14:43 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Number与parseInt的区别

          本文链接:https://www.haomeiwen.com/subject/njothftx.html