(始) parseInt 分析

本文介绍了JavaScript中的parseInt函数,解析其参数和工作原理。内容包括:1) 字母开头或纯字母字符串返回NaN;2) 非零整数开头的字符串将正常返回整数;3) 小数会返回其向下取整的整数值;4) 以0开头的数字在ECMAScript 5中按10进制解析,但在ECMAScript 3中可能被视为8进制。还提供了官方文档链接和个人分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前学js的时候没写博客都感觉白学了orz,借liao雪峰官网和牛客前端练习再捡一遍2333,手册MDN


定义:parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数

参数:


    string:要被解析的值。如果参数不是一个字符串,则将其转换为字符串。字符串开头的空白符将会被忽略。


    radix:一个2到36之间的整数值,用于指定转换中采用的基数。


        如果省略该参数或者为0,则数字将以 10 为基础来解析。


        如果string以 “0x” 或 “0X” 开头,将以 16 为基数。


        如果string以“0” 开头,在ECMA3中被认为是8进制;但是在ECMA5中已经强制规定此情况默认是10进制


        如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN

部分源码:

if (radix == 0) { //如果传入radix是0,则以10进行处理
    // Radix detection.
    radix = 10;
    if (*current == '0') {
      ++current;
      if (current == end) return SignedZero(negative);
      if (*current == 'x' || *current == 'X') {
        radix = 16;
        ++current;
        if (current == end) return JunkStringValue();
      } else {
        leading_zero = true;
      }
    }
  } else if (radix == 16) { //16进制
    if (*current == '0') {
      // Allow "0x" prefix.
      ++current;
      if (current == end) return SignedZero(negative);
      if (*current == 'x' || *current == 'X') {
        ++current;
        if (current == end) return JunkStringValue();
      } else {
        leading_zero = true;
      }
    }
  }
  
  if (radix < 2 || radix > 36) return JunkStringValue(); //radix不在2~36之间的处理

示例(官方文档示例很清楚)

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt

个人分析:对于parseInt不同参数做的深入see see

1.第一个参数是字母开头或是只含字母的字符串,会返回NaN(js里代表非数字的特殊属性值),eg:"a123",像"123hhh"这种会自动忽视后面的hhh ,hhh

ps:如果第一个参数是整数,parseInt会先把这个数toString了

2.第一个参数是个非零开头的整数,会正常返回,正常表示的最大值有17位:


3.第一个参数是小数,会返回这个小数的Math.floor()值,类似c/c++里的int强制类型转化,但当这个小数小到0.0000001时,结果会返回1(即使是"0.0000001"也会返回1),0.000001是0

4.第一个参数以0打头,如

parseInt(021)

(注意和parseInt("021")不同),结果为15

因为021.toString()="17",开头是0,以8进制读取为15



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值