我在此JavaScript代码上运行了JSLint,它说:
第32行的字符30处的问题:基数参数丢失。
这是有问题的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
怎么了
在JS文件的顶部添加以下内容将告诉JSHint禁止基数警告:
/*jshint -W065 */
另请参阅: http : //jshint.com/docs/#options
我没有正确回答这个问题,但是,我认为有必要弄清楚为什么我们应该指定基数 。
在MDN文档中,我们可以阅读以下内容:
如果radix未定义或为0(或不存在),则JavaScript假定以下内容:
资料来源: MDN parseInt()
如果您想跳过该测试,则可以关闭此规则。
插入:
radix: false
在tslint.json
文件的“ rules
”属性下。
如果您不了解此异常,则不建议这样做。
我仅使用+ foo解决了该问题,即可转换字符串。
请记住,它对可读性(脏污修复)不是很好。
console.log( +'1' )
// 1 (int)
您也可以直接在parseInt行上方添加以下行:
// eslint-disable-next-line
这将禁用eslint检查下一行。 如果只需要跳过一两行,请使用此选项。
只需将一个空字符串放在基数位置,因为parseInt()带有两个参数:
parseInt(string,radix);
字符串要解析的值。 如果string参数不是字符串,则将其转换为字符串(使用ToString抽象操作)。 字符串参数中的前导空格将被忽略。
基数2到36之间的整数,表示上述字符串的基数(数学数字系统中的基数)。 为人类常用的十进制系统指定10。 始终指定此参数,以消除读者的困惑并保证可预测的行为。 当未指定基数时,不同的实现产生不同的结果,通常将值默认为10。
imageIndex = parseInt(id.substring(id.length-1))-1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;
为避免此警告,请使用:
parseInt("999", 10);
您可以将其替换为:
Number("999");
请注意,parseInt和Number的行为不同 ,但是在某些情况下,一个可以替换另一个。
您可以使用.slice()
代替调用substring
函数
imageIndex = parseInt(id.slice(-1)) - 1;
在这里,切片中的-1表示从最后一个索引开始切片。
谢谢。
只需在.eslintrc中添加您的自定义规则,该规则看起来像"radix": "off"
,您将摆脱此eslint不必要的警告。 这是为eslint短绒棉。
在ECMAScript 5之前,parseInt()还自动检测八进制文字,这会引起问题,因为许多开发人员认为前导0将被忽略。
因此,而不是:
var num = parseInt("071"); // 57
做这个:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);
用parseInt传递基数始终是一个好习惯-
parseInt(string, radix)
对于小数-
parseInt(id.substring(id.length - 1), 10)
如果省略了radix参数,则JavaScript假定以下内容:
( 参考 )