首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-undef-init

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

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

代码语言:javascript
复制
var foo;

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

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

代码语言:javascript
复制
var foo = undefined;

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

规则细节

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

此规则的错误代码示例:

代码语言:javascript
复制
/*eslint no-undef-init: "error"*/
/*eslint-env es6*/

var foo = undefined;
let bar = undefined;

此规则的正确代码示例:

代码语言:javascript
复制
/*eslint no-undef-init: "error"*/
/*eslint-env es6*/

var foo;
let bar;
const baz = undefined;

何时不使用它

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

此规则的错误代码示例:

代码语言:javascript
复制
for (i = 0; i < 10; i++) {
    var x = undefined;
    console.log(x);
    x = i;
}

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

代码语言:javascript
复制
var x;

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

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

代码语言:javascript
复制
for (i = 0; i < 10; i++) {
    var x;
    console.log(x);
    x = i;
}

此代码相当于:

代码语言:javascript
复制
var x;

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

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

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

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

代码语言:javascript
复制
/*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 中引入的。

资源

扫码关注腾讯云开发者

领取腾讯云代金券