CodeQL 文档

变量在使用前未声明

ID: js/use-before-declaration
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - maintainability
   - readability
Query suites:
   - javascript-security-and-quality.qls

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

JavaScript 允许在声明之前使用局部变量。但是,这对代码阅读者来说很混乱,因为可能不清楚该使用是指局部变量还是相同名称的全局变量。

建议

将局部变量声明移动到封闭函数的开头,或(对于全局变量)移动到源文件的开头。

示例

在以下示例中,函数 f 中声明的局部变量 x 覆盖了相同名称的全局变量。但是,局部变量的第一次使用先于其声明,因此不熟悉代码的开发人员可能会假设此使用是指全局变量而不是局部变量。

var x = 23;

function f() {
	x = 42;
	var x;
}

参考文献

  • D. Crockford, JavaScript: The Good Parts, 第 4.9 节。O’Reilly,2008 年。

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