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议这样做。