CodeQL 文档

未使用的变量、导入、函数或类

ID: js/unused-local-variable
Kind: problem
Security severity: 
Severity: recommendation
Precision: very-high
Tags:
   - maintainability
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

未使用的局部变量会使代码难以阅读和理解。任何用于初始化未使用变量的计算都是浪费的,这可能会导致性能问题。

类似地,未使用的导入和未使用的函数或类会令人困惑。它们甚至可能是错误的征兆,例如,由不完整的重构引起的错误。

建议

删除未使用的程序元素。

示例

在此代码中,函数f 使用对函数expensiveComputation 的调用来初始化一个局部变量x,但随后从未读取过该变量。删除x 会提高代码质量和性能。

function f() {
	var x = expensiveComputation();
	return 23;
}

下面展示了一个稍微微妙的情况,其中一个名为f 的函数表达式被分配给一个变量f

var f = function f() {
  return "Hi!";
};
f();

请注意,此示例涉及两个不同的变量,都名为f:函数分配到的全局变量,以及函数表达式隐式声明的变量。对f() 的调用是指前者变量,而后者则是未使用的。因此,可以将示例改写如下,消除无用变量

var f = function () {
  return "Hi!";
};
f();

类似的情况也可能发生在 ECMAScript 2015 模块导出中,如下例所示

export default function f() {
  return "Hi!";
};

同样,命名函数表达式隐式声明了一个变量f,但由于 export 语句是默认导出,因此该变量未使用,可以将其删除

export default function () {
  return "Hi!";
};

参考资料

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