JSLint说“缺less基数参数”; 我该怎么办?

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

第32行的问题30:缺less基数参数。

这是有问题的代码:

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

这里有什么问题?

将基数传递给parseInt总是一个好习惯 –

 parseInt(string, radix) 

对于小数 –

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

如果省略了radix参数,那么JavaScript假定如下:

  • 如果string以“0x”开始,则基数为16(hex)
  • 如果string以“0”开始,则基数为8(八进制)。 此function已被弃用
  • 如果string以任何其他值开始,则基数为10(十进制)

( 参考 )

我没有正确回答这个问题,但是我认为明确为什么要指定基数是有意义

在MDN文档上,我们可以阅读:

如果基数未定义或0(或不存在),JavaScript假定如下:

  • […]
  • 如果inputstring以“0”开始,则基数为八(八进制)或十(十进制)。 究竟select哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有的浏览器都支持这一点。 出于这个原因,当使用parseInt时总是指定一个基数。
  • […]

来源: MDN parseInt()

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

 /*jshint -W065 */ 

另见: http : //jshint.com/docs/#options

如果你想跳过这个testing,你可以关掉这个规则。

插:

 radix: false 

tslint.json文件的“ rules ”属性下。

如果你不了解这个例外情况,不build议这样做。