CodeQL 文档

未使用的索引变量

ID: js/unused-index-variable
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - correctness
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

如果`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;
}

参考资料

  • Mozilla 开发者网络:for

  • Mozilla 开发者网络:for…of

  • ©GitHub, Inc.
  • 条款
  • 隐私