我有一些没有通过lint的代码。有更好的方法吗?
第一个错误是
lint警告:前导零形成八进制数
function getNumberCounter(lastNumberString, simple){
var myCount;
if(!lastNumberString){
return "-1";
}
else{
switch(lastNumberString.split("-")[1]){
case "08" : myCount = 9;
break;
case "09" : myCount = 10;
break;
case "99" : myCount = 00;
break;
default : myCount = parseInt((lastNumberString.split("-")[1]),10) + 1;
break;
}
if(!simple){
if(myCount <= 9){
return ('0' + myCount);
}
}
return myCount;
}
}
另一个是
lint警告:增量(++)和减量( - )运算符用作更大语句的一部分
function getRandomString(_length){
_retString = "";
_charSet = "0123456789abcdefghijklmnopqrstuvwxyz";
while(_length--){
_retString += _charSet.charAt(Random(0, _charSet.length-1));
Delay(1);
}
return _retString;
}
这也是javascript,但它不是html类型,是否有人知道它是什么类型,尝试使用javascript检查器,它希望我编写基于HTML的代码。
为什么会发生这种情况,是否会对我在计算机上使用的软件产生实际影响。
答案 0 :(得分:1)
在许多语言中,除了0
本身之外,具有前导零的数字被认为是八进制(即基数8)字面值。例如,012
是十进制数十,即使它看起来更像十二。所以00
被认为是八进制数,尽管它显然为零。
在严格模式下,八进制文字是一个语法错误,如octal numbers were never part of the ECMAScript standard。我想你的linter正在执行相同的规则。
所以解决你的第一个问题很简单:
case "99" : myCount = 0; // Drop one of the zeroes.
第二个问题在这里:
while(_length--){
您正在递减长度的值以及读取其原始值或新值。你的短信是抱怨,因为你正在做两件事。这样做会使代码难以阅读。特别是,循环运行length
次还是length - 1
次?目前尚不清楚。
你的while
循环总是运行固定的次数,因此从风格的角度来看,使用for
循环会更好:
for (var i = 0; i < length; ++i) {
_retString += _charSet.charAt(Random(0, _charSet.length-1));
Delay(1);
}
由于您现在只在++
循环中的++i
语句中使用for
,因此应该避免lint警告。