我在这个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);
字符串 要解析的值。如果string参数不是字符串,则将其转换为字符串(使用ToString抽象操作)。字符串参数中的前导空格将被忽略。
基数 2到36之间的整数,表示上述字符串的基数(数学数字系统中的基数)。指定10为人类常用的十进制数字系统。始终指定此参数以消除读者的困惑并保证可预测的行为。如果没有指定基数,不同的实现会产生不同的结果,通常默认值为10。
imageIndex = parseInt(id.substring(id.length - 1))-1; imageIndex = parseInt(id.substring(id.length - 1), '')-1;
其他回答
如果您希望跳过该测试,可以关闭此规则。
插入:
radix: false
在tslint中的“rules”属性下。json文件。
如果您不理解这个异常,不建议这样做。
你可以使用.slice()代替调用子字符串函数
imageIndex = parseInt(id.slice(-1)) - 1;
这里,slice中的-1表示从最后一个索引开始切片。
谢谢。
只要在基数位置放一个空字符串,因为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;
我只用+foo来转换字符串。
请记住,这对可读性不是很好(肮脏的修复)。
console.log( +'1' )
// 1 (int)
在ECMAScript 5之前,parseInt()还自动检测八进制文字,这导致了一些问题,因为许多开发人员认为前导0会被忽略。
所以与其:
var num = parseInt("071"); // 57
这样做:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);
参考