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 中引入的。