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

原文规则错误描述解读

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

思考

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

语法:

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 源码可以看出:

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

eslint 规则之 《Missing radix parameter》相关推荐

  1. ESLint 规则详解

    前端界大神 Nicholas C. Zakas 在 2013 年开发的 ESLint,极大地方便了大家对 Javascript 代码进行代码规范检查.这个工具包含了 200 多条 Javascript ...

  2. 自己动手写符合自己业务需求的eslint规则

    简介:eslint是构建在AST Parser基础上的规则扫描器,缺省情况下使用espree作为AST解析器.rules写好对于AST事件的回调,linter处理源代码之后会根据相应的事件来回调rul ...

  3. vue cli3中eslint报错“no-undef“和eslint规则配置

    1.出现no-undef报错,是因为eslint的语法检测中不能有未定义的变量,在根目录下的.eslintrc.js的rules{}中添加  'no-undef': 0  之后重启编辑器即可解决. 2 ...

  4. VS Code识别编辑规范,ESlint规则,VS Code保存去掉自动加分号、逗号、双引号

    书写规范是非常重要的,除了统一,还要简洁. 1.VS Code识别编辑规范 在项目根目录新建.editorconfig文件,加入设置: # editorconfig.orgroot = true[*] ...

  5. (转)java.lang.RuntimeException: Missing type parameter

    java.lang.RuntimeException: Missing type parameter (2015-04-07 14:35:51)   分类: 技术 程序中用到了gson的new typ ...

  6. 小程序 redux_Redux应用程序最重要的ESLint规则

    小程序 redux by Paul Matthew Jaworski 保罗·马修·贾沃斯基(Paul Matthew Jaworski) Redux应用程序最重要的ESLint规则 (The Most ...

  7. 按照eslint 规则一键修复

    有时候虽然我们知道怎么去处理eslint规则所报的错误,但是如果项目过大,文件过多,未免会有些不耐烦.如果这时我们能够按照eslint规则一键修复,那简直不要太爽了啊.接下来我就说下怎么解决这个问题 ...

  8. 基于ESlint在项目中扩展自己的ESlint规则

    目录 效果展示 源码分析 在团队开发中,经常会碰到这样的场景: 来一个新人,碰到需求需要处理日期,但不知道项目中已经有封装好的日期库,就自己做了一个轮子 又来一个新人,碰到弹层用官方的是Modal,但 ...

  9. CCS DSP错误include_path is missing its parameter 'dir'

    今天重建工程,为了省事,Properties->Build->C6000 Compiler->Include Option 中include目录直接复制的前一个工程的头文件目录,结果 ...

  10. realease包出现–missing type parameter

    项目中用到了gson,在解析时用到了 Type listType = new TypeToken<>(){}.getType(); 当使用debug包时进行网络请求没有问题,但是当把项目打 ...

最新文章

  1. php 两个数组求交集_如何求两个数组的交集
  2. django-admin.py 不是内部或外部命令
  3. MySQL中的时间函数用法集合
  4. 安装或卸载英特尔快速存储技术时,提示“此程序有一个挂起的重新启动”
  5. linux 桌面显示视频播放器,Ubuntu 13.10开启媒体播放器VLC桌面通知的步骤
  6. Valgrind概述
  7. 微软开源 Scalar,提升操作巨型 Git 仓库的速度
  8. 通道注意力机制_即插即用,Triplet Attention机制让Channel和Spatial交互更加丰富(附开源代码)...
  9. 面向失败的设计之播控系统!
  10. Mybatis之分页插件PageHelper工作原理
  11. [计算机毕业设计]深度学习的图标型验证码识别系统
  12. 了解ES6 The Dope Way第五部分:类,转译ES6代码和更多资源!
  13. redis数据结构hash
  14. SWUSTOJ #971 统计利用先序遍历创建的二叉树的深度
  15. CRMEB小程序商城源码安装后,个人中心推广海报不显示处理方法!
  16. 将WINDOWS服务里的服务创建快捷方式到桌面
  17. 全局变量global的用法
  18. (10.1.4) Material Design设计规范
  19. 2014年珠宝行业下半年电商分析报告及双11销售排名
  20. 计算机结构及CISC和RISC

热门文章

  1. 举个栗子!Tableau技巧(9):Lisa教你巧妙制作混合地图
  2. 股市一跌再跌,是在提醒我们什么?
  3. 怎么设置日程提醒时间
  4. c语言vc里设置光标位置,VC设置鼠标光标方法
  5. C语言中宏定义函数的运算优先级问题
  6. Java获取本地ip地址
  7. 在纯Win10环境下部署DzzOffice+OnlyOffice协同办公系统
  8. 电信物联卡网络怎么样_中国电信物联网专用卡(中国电信物联网卡怎么样)
  9. Windows要求已数字签名的驱动程序
  10. java模板方法模式_Java设计模式之模板方法模式