Mik*_*ind 498 javascript jslint radix
我在这个JavaScript代码上运行了JSLint,它说:
第32行的问题字符30:缺少基数参数.
这是有问题的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
Jay*_*dra 909
用parseInt传递radix总是一个好习惯 -
parseInt(string, radix)
Run Code Online (Sandbox Code Playgroud)
小数 -
parseInt(id.substring(id.length - 1), 10)
Run Code Online (Sandbox Code Playgroud)
如果省略radix参数,则JavaScript假定以下内容:
(参考)
Zan*_*non 54
要避免此警告,请使用:
parseInt("999", 10);
Run Code Online (Sandbox Code Playgroud)
您可以将其替换为:
Number("999");
Run Code Online (Sandbox Code Playgroud)
请注意,parseInt和Number具有不同的行为,但在某些情况下,可以替换另一个.
nmo*_*ira 40
我没有正确回答这个问题,但我认为有必要明确我们为什么要指定基数.
在MDN文档中,我们可以读到:
如果radix未定义或0(或不存在),则JavaScript假定以下内容:
Spo*_*ck 23
如果您希望跳过该测试,可以关闭此规则.
插入:
radix: false
Run Code Online (Sandbox Code Playgroud)
在文件中的" rules"属性下tslint.json.
如果您不理解此异常,则不建议这样做.
小智 22
在 ECMAScript 5 之前,parseInt() 还会自动检测八进制文字,这会导致问题,因为许多开发人员认为前导 0 会被忽略。
所以而不是:
var num = parseInt("071"); // 57
Run Code Online (Sandbox Code Playgroud)
做这个:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);
Run Code Online (Sandbox Code Playgroud)
ale*_*emb 21
在JS文件上添加以下内容将告诉JSHint压制基数警告:
/*jshint -W065 */
Run Code Online (Sandbox Code Playgroud)
另见:http://jshint.com/docs/#options
只需在 .eslintrc 中添加您的自定义规则(如下所示)
"radix": "off"
,您就可以摆脱此 eslint unnesesery 警告。这是针对 eslint linter 的。