未使用的变量、导入、函数或类¶
ID: js/unused-local-variable
Kind: problem
Security severity:
Severity: recommendation
Precision: very-high
Tags:
- maintainability
Query suites:
- javascript-security-and-quality.qls
未使用的局部变量会使代码难以阅读和理解。任何用于初始化未使用变量的计算都是浪费的,这可能会导致性能问题。
类似地,未使用的导入和未使用的函数或类会令人困惑。它们甚至可能是错误的征兆,例如,由不完整的重构引起的错误。
建议¶
删除未使用的程序元素。
示例¶
在此代码中,函数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!";
};