变量在使用前未声明¶
ID: js/use-before-declaration
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- maintainability
- readability
Query suites:
- javascript-security-and-quality.qls
JavaScript 允许在声明之前使用局部变量。但是,这对代码阅读者来说很混乱,因为可能不清楚该使用是指局部变量还是相同名称的全局变量。
建议¶
将局部变量声明移动到封闭函数的开头,或(对于全局变量)移动到源文件的开头。
示例¶
在以下示例中,函数 f
中声明的局部变量 x
覆盖了相同名称的全局变量。但是,局部变量的第一次使用先于其声明,因此不熟悉代码的开发人员可能会假设此使用是指全局变量而不是局部变量。
var x = 23;
function f() {
x = 42;
var x;
}
参考文献¶
D. Crockford, JavaScript: The Good Parts, 第 4.9 节。O’Reilly,2008 年。