我正在使用一个有点非传统的for循环,它适用于我正在做的事情,如下所述(不打扰显示变量声明):
if (arr && arr.length > 0) {
for (i = arr.length; i--; i) {
element = arr.pop();
//rest of code
}
}
Closure编译器给我一个警告:“警告 - 可疑代码。这段代码没有副作用,是否有错误?”专门针对for循环parens中的最后一个“i”。
如果我删除了i,jslint会抛出一个警告,如果我离开它,关闭会发出警告。总共有三个循环,是否有“关闭友好”的方式来做到这一点?
答案 0 :(得分:3)
通常的方式怎么样?
if (arr && arr.length > 0) {
for (i = arr.length; i > 0; --i) {
element = arr.pop();
//rest of code
}
}
将减量放在测试中并不是编写for
循环的正常方法。
甚至更正常:
if (arr && arr.length > 0) {
for (i = arr.length - 1; i >= 0; --i) {
element = arr.pop();
//rest of code
}
}
...但是,由于您没有使用i
,因此无关紧要。
或者您可以使用while
:
if (arr && arr.length > 0) {
i = arr.length;
while (i--) {
element = arr.pop();
//rest of code
}
}
答案 1 :(得分:1)
对于未来的读者,如果要减少数组的长度,请不要使用for
循环,请使用while
:
if (arr) {
while (arr.length) {
element = arr.pop();
...
}
}
答案 2 :(得分:0)
是的 - 这样的事情可以解决问题:
for (i = arr.length; i > 0; i--) {
答案 3 :(得分:0)
使用jshint而不是jslint并关闭警告。