我在这个JavaScript代码上运行了JSLint,它说:
第32行的问题字符30:缺少基数参数。
这是有问题的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
这有什么不对?
用parseInt传递radix总是一个好习惯 -
parseInt(string, radix)
小数 -
parseInt(id.substring(id.length - 1), 10)
如果省略radix参数,则JavaScript假定以下内容:
(Qazxswpoi)
只需在.eslintrc中添加您的自定义规则,看起来就像 imageIndex = parseInt(id.slice(-1)) - 1;
一样,您将免于这种不必要的警告。这是针对eslint linter。
我没有正确回答这个问题,但我认为有必要明确我们为什么要指定基数。
在MDN文档中,我们可以读到:
如果radix未定义或0(或不存在),则JavaScript假定以下内容:
资料来源:Reference
要避免此警告,请使用:
MDN parseInt()
您可以将其替换为:
parseInt("999", 10);
请注意,parseInt和Number具有Number("999");
,但在某些情况下,可以替换另一个。
在JS文件上添加以下内容将告诉JSHint压制基数警告:
tslint.json
另见:/*jshint -W065 */
您也可以在parseInt行的正上方添加以下行:
console.log( +'1' )
// 1 (int)
这将禁用下一行的eslint检查。如果您只需要跳过一行或两行,请使用此选项。
只需在基数位置放一个空字符串,因为parseInt()接受两个参数:
parseInt(string,radix);
string要解析的值。如果字符串参数不是字符串,则将其转换为字符串(使用ToString抽象操作)。字符串参数中的前导空格将被忽略。
radix 2到36之间的整数,表示上述字符串的基数(数学数字系统中的基数)。为人类常用的十进制数字系统指定10。始终指定此参数以消除读者混淆并保证可预测的行为。当未指定基数时,不同的实现会产生不同的结果,通常将值默认为10。
imageIndex = parseInt(id.substring(id.length - 1)) - 1;
// eslint-disable-next-line
而不是调用imageIndex = parseInt(id.substring(id.length - 1), '')-1;
函数,你可以使用substring
.slice()
这里,切片中的-1表示从最后一个索引开始切片。
谢谢。