Eslint
规则 | Rules

no-undef-init

Disallow Initializing to undefined (no-undef-init)

--fix命令行上的选项可以自动修复一些被这条规则反映的问题。

在 JavaScript 中,声明并未初始化为任何值的变量会自动获取值undefined。例如:

var foo; console.log(foo === undefined // true

因此不需要初始化变量undefined,例如:

var foo = undefined;

避免初始化变量被认为是最佳做法undefined

规则细节

此规则旨在消除初始化为的变量声明undefined

此规则的错误代码示例:

/*eslint no-undef-init: "error"*/ /*eslint-env es6*/ var foo = undefined; let bar = undefined;

此规则的正确代码示例:

/*eslint no-undef-init: "error"*/ /*eslint-env es6*/ var foo; let bar; const baz = undefined;

何时不使用它

有一种情况是初始化的undefined行为与省略初始化的行为不同,这是在var循环内发生声明的时候。例如:

此规则的错误代码示例:

for (i = 0; i < 10; i++) { var x = undefined; console.log(x x = i; }

在这种情况下,将var x其吊装在循环之外,从而有效地创建:

var x; for (i = 0; i < 10; i++) { x = undefined; console.log(x x = i; }

如果你要删除初始化,那么循环的行为会改变:

for (i = 0; i < 10; i++) { var x; console.log(x x = i; }

此代码相当于:

var x; for (i = 0; i < 10; i++) { console.log(x x = i; }

这会产生var x = undefined与循环中定义不同的结果,因为x不再undefined通过循环重新设置。

如果你在循环中使用这种初始化,那么你应该禁用这个规则。

此规则的正确代码示例,因为它在特定行上被禁用:

/*eslint no-undef-init: "error"*/ for (i = 0; i < 10; i++) { var x = undefined; // eslint-disable-line no-undef-init console.log(x x = i; }

相关规则

  • no-undefined

  • no-void

版本

这条规则是在 ESLint 0.0.6 中引入的。

资源