未使用的索引变量¶
ID: js/unused-index-variable
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- correctness
Query suites:
- javascript-security-and-quality.qls
如果`for
` 循环的循环变量遍历数组的索引,则该变量通常用作循环主体中数组的索引。如果循环主体只引用了常量索引处的数组元素,则可能表明存在逻辑错误或残留的测试代码。
建议¶
仔细检查循环以确保其按预期工作。您可能需要考虑使用`for
`-`of
` 循环遍历数组的所有元素,而无需进行容易出错的索引操作。
示例¶
以下示例显示了一个旨在将数组`xs
` 的元素加起来的函数。循环变量`i
` 从 0 递增到`xs.length-1
`,但代码没有将`xs[i]
` 添加到运行总和`res
` 中,而是将`xs[0]
`(`xs
` 的第一个元素)添加到了运行总和中,这很可能是一个错误。
function sum(xs) {
var res = 0;
for(var i=0; i<xs.length; ++i)
res += xs[0]; // BAD: should be xs[i]
return res;
}
可以通过添加`xs[i]
` 来解决问题
function sum(xs) {
var res = 0;
for(var i=0; i<xs.length; ++i)
res += xs[i];
return res;
}
或者,可以使用`for
`-`of
` 循环更简洁地编写函数
function sum(xs) {
var res = 0;
for(var x of xs)
res += x;
return res;
}