未使用的循环迭代变量¶
ID: js/unused-loop-variable
Kind: problem
Security severity:
Severity: error
Precision: high
Tags:
- maintainability
- correctness
Query suites:
- javascript-security-and-quality.qls
大多数 for...in
和 for...of
语句在循环体中使用它们的迭代变量,除非它们只是通过在循环体中递增循环计数器来计算迭代次数,或者检查循环体是否被执行。不使用它们的迭代变量但也不属于这两种情况之一的循环可能表明逻辑错误或类型错误。
建议¶
仔细检查循环变量是否应该被使用。如果变量确实没有被使用,并且代码是正确的,请考虑将变量重命名为 _
或 unused
,以向代码阅读者表明它是有意未使用的。
示例¶
在这个例子中,for...of
循环迭代变量 x
从未被使用。似乎该函数的目的是计算数组 xs
中有多少个元素满足过滤器谓词 p
,但程序员忘记了将 x
作为参数传递给 p
。
function countOccurrences(xs, p) {
var count = 0;
for (let x of xs)
if (p())
++count;
return count;
}
为了解决这个问题,应该将调用 p()
替换为 p(x)
。