我在这段 JavaScript 代码上运行了 JSLint,它说:
第 32 行字符 30 的问题:缺少基数参数。
这是有问题的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
这里有什么问题?
我在这段 JavaScript 代码上运行了 JSLint,它说:
第 32 行字符 30 的问题:缺少基数参数。
这是有问题的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
这里有什么问题?
使用 parseInt 传递基数总是一个好习惯 -
parseInt(string, radix)
对于十进制 -
parseInt(id.substring(id.length - 1), 10)
如果省略 radix 参数,JavaScript 假定如下:
(参考)
为避免此警告,请不要使用:
parseInt("999", 10);
您可以将其替换为:
Number("999");
请注意, parseInt 和 Number 具有不同的行为,但在某些情况下,一个可以替换另一个。
我没有正确回答这个问题,但我认为明确为什么我们应该指定 radix是有道理的。
在 MDN 文档中,我们可以读到:
如果 radix 未定义或为 0(或不存在),JavaScript 会假设如下:
- [...]
- 如果输入字符串以“0”开头,则基数为八(八进制)或 10(十进制)。究竟选择哪个基数取决于实现。 ECMAScript 5 指定使用 10(十进制),但并非所有浏览器都支持它。由于这个原因,在使用 parseInt 时总是指定一个基数。
- [...]
如果您想跳过该测试,您可以关闭此规则。
插入:
radix: false
在文件中的“ rules
”属性下tslint.json
。
如果您不了解此异常,则不建议这样做。