我在这个JavaScript代码上运行JSLint,它说:
第32行字符30的问题:缺少基数参数。
这是问题中的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
这里出了什么问题?
我在这个JavaScript代码上运行JSLint,它说:
第32行字符30的问题:缺少基数参数。
这是问题中的代码:
imageIndex = parseInt(id.substring(id.length - 1))-1;
这里出了什么问题?
当前回答
我只用+foo来转换字符串。
请记住,这对可读性不是很好(肮脏的修复)。
console.log( +'1' )
// 1 (int)
其他回答
为了避免这个警告,不要使用:
parseInt("999", 10);
你可以用:
Number("999");
注意,parseInt和Number有不同的行为,但在某些情况下,一个可以替换另一个。
你可以使用.slice()代替调用子字符串函数
imageIndex = parseInt(id.slice(-1)) - 1;
这里,slice中的-1表示从最后一个索引开始切片。
谢谢。
在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行上面:
// eslint-disable-next-line
这将禁用下一行的eslint检查。如果你只需要跳过一两行就可以使用这个方法。
在JS文件的顶部添加以下内容将告诉JSHint抑制基数警告:
/*jshint -W065 */
参见:http://jshint.com/docs/#options