• 关于parseInt,很神奇


    这是她的两个关键点

    • parseInt首先会将非字符串转为字符串,所以parseInt(1),

      她首先会去把1隐式转换为'1',再显示转为1,对有点智障

    • parseInt会贪婪的解析,直到自己不能转化

    先来看定义

    parseInt(string, radix);

    string 要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略。 radix 可选 从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值!

    关于参数radix的值

    如果 radixundefined0或未指定的,JavaScript会假定以下情况:

    1. 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。

    2. 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix

    3. 如果输入的 string 以任何其他值开头, radix10 (十进制)。

    如果第一个字符不能转换为数字,parseInt会返回 NaN

    关于解析规则

    如果 parseInt遇到的字符不是指定 radix参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值parseInt 将数字截断为整数值。 允许前导和尾随空格。

    返回值:

    从给定的字符串中解析出的一个整数。

    或者 NaN,当

    • radix 小于 2 或大于 36 ,或

    • 第一个非空格字符不能转换为数字。

    实例

    parseInt('123a')
    //=>123 只解析到3,a不符合10进制解析规则

    注意

    • 请不要将parseInt()和比较混淆

      ('a' < 'b')
      //=>true 在比较的时候,会转化为ASCII

      parseInt('a')
      //=>NaN
      // 在解析的时候就不一样了,这里相当于parseInt('a', 10)
      // 即通过10进制的方式去解析'a',那么会得到NaN(无法解析)的结果

      关于比较的问题,请看[] 关于js的比较 (self)

    参考:

    [r1] parseInt (MDN)

  • 相关阅读:
    20172021年福建省普通高校分数线,招生报考及录取统计(理科)
    SUSE Linux Enterprise 15 SP1 系统安装
    常见的网络服务器软件综合比较介绍(apache、IIS、tomcat、jboss、resin、weblogic、websphere)
    车载继电器工作原理
    java线程池使用实例
    dubbo入门教程:基于dubbo实现服务之前调用
    Sentinal
    微服务之服务网关
    ElasticSearch查询(二)
    微服务之配置管理中心
  • 原文地址:https://www.cnblogs.com/nahaohao/p/14785698.html
Copyright © 2020-2023  润新知