JSLint说“缺少基数参数”

问题描述 投票:498回答:11

我在此JavaScript代码上运行了JSLint,它说:

第32行字符30处的问题:基数参数丢失。

这是有问题的代码:

imageIndex = parseInt(id.substring(id.length - 1))-1;

这里怎么了?

javascript jslint radix
11个回答
905
投票

[通过parseInt传递基数始终是一个好习惯-

parseInt(string, radix)

对于十进制-

parseInt(id.substring(id.length - 1), 10)

如果省略了radix参数,则JavaScript假定以下条件:

  • 如果字符串以“ 0x”开头,则基数为16(十六进制)。
  • 如果字符串以“ 0”开头,则基数为8(八进制)。不推荐使用此功能
  • 如果字符串以任何其他值开头,则基数为10(十进制)
  • Reference


0
投票

只需在.eslintrc中添加您的自定义规则,如下所示"radix": "off"并且您将摆脱此eslint unnesesery警告。这是给随便的lint使用的。


0
投票

在ECMAScript 5之前,parseInt()还自动检测到八进制文字,这引起了问题,因为许多开发人员认为前导0将被忽略。


54
投票

为了避免此警告,请不要使用:


40
投票

我没有正确回答问题,但是,我认为清除为什么要指定基数


23
投票

如果您想跳过该测试,则可以关闭此规则。


21
投票

在JS文件顶部添加以下内容将告诉JSHint禁止基数警告:


4
投票

我仅使用+ foo解决了该问题,就转换了字符串。


3
投票

您也可以直接在parseInt行上方添加此行:


2
投票

只需将一个空字符串放在基数位置,因为parseInt()带有两个参数:


0
投票

代替调用substring函数,您可以使用.slice()

© www.soinside.com 2019 - 2024. All rights reserved.