首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >eslint 规则之 《Missing radix parameter》

eslint 规则之 《Missing radix parameter》

作者头像
星宇大前端
发布2022-03-09 11:29:23
发布2022-03-09 11:29:23
1.1K0
举报
文章被收录于专栏:大宇笔记大宇笔记

eslint 规则连接:https://eslint.org/docs/rules/radix

原文规则错误描述解读

在我们使用parseInt 的时候,应该设置第二个参数据,而不能不写使用默认。

思考

parseInt 第二个参数radix 是什么意思

语法:

代码语言:javascript
复制
parseInt(string, radix)

参数描述:

参数

描述

string

必需。要被解析的字符串。

radix

可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

数字的基数是什么意思呢?

基数(cardinal number)在数学上,是集合论中刻画任意集合大小的一个概念。两个能够建立元素间一一对应的集合称为互相对等集合。例如3个人的集合和3匹马的集合可以建立一一对应,是两个对等的集合。

百度了下基数的概念,然后试验了一下,是不是所谓的进制。

因为radix该值介于 2 ~ 36 之间,所以我从2开始试验:

可以看出函数将字符串按照每一位进行划分,比如 ‘16’分为 1和6,如果每一位在基数范围内,则不是NAN否则,是NAN。

在看下数值怎么结算的呢?是不是按照基数的进制来的?

161 被分为 161 6不在范围内,后面不计算最后得:

1 * 5^ 0 = 1

123 被分为 123 都在范围内,计算最后得:

1 * 5^ 2 + 2 * 5^ 1 + 3 * 5^0 = 25 + 10+3 = 38

虽然还是不明白基数在集合中的全部定义,大概知道的意思是,前面被分解后的数,是不是在基数的集合里,如果第一个不再则返回NAN,如果第一个在,后面的哪个不在,在哪里停止。

最后计算按照基数进制计算。

parseInt 第二个参数radix 默认值是什么

那么parseInt默认值,是不是10呢?默认值是10,传入0 会以10处理。

查看v8 parseInt 源码可以看出:

代码语言:javascript
复制
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之间的处理

总结

parseInt用的时候比较简单,但是理解第二个参数还是有些抽象。不要以为然的写代码,一定弄清其中真相。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文规则错误描述解读
  • 思考
    • parseInt 第二个参数radix 是什么意思
    • parseInt 第二个参数radix 默认值是什么
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档