版本

consistent-this

在捕获当前执行上下文时强制使用一致的命名

为了随后能够使用,通常需要捕获当前执行上下文。一个突出的例子是 jQuery 回调函数。

var that = this;
jQuery('li').click(function (event) {
    // here, "this" is the HTMLElement where the click event occurred
    that.setFoo(42);
});

this 有许多常用的别名,例如 thatselfme。希望确保团队商定的任何别名在整个应用程序中都使用一致。

规则详情

此规则强制执行关于 this 指定别名变量的两件事

  • 如果声明了一个具有指定名称的变量,则它必须在声明中初始化或在与声明相同的范围内赋值为 this
  • 如果变量被初始化或赋值为 this,则变量的名称必须是指定的别名。

选项

此规则具有一个或多个字符串选项

  • this 的指定别名(默认值为 "that"

使用默认 "that" 选项时,此规则的错误代码示例

在代码游乐场中打开
/*eslint consistent-this: ["error", "that"]*/

var that = 42;

var self = this;

that = 42;

self = this;

使用默认 "that" 选项时,此规则的正确代码示例

在代码游乐场中打开
/*eslint consistent-this: ["error", "that"]*/

var that = this;

var self = 42;

var self;

that = this;

foo.bar = this;

如果变量未初始化,则使用默认 "that" 选项时,此规则的错误代码示例

在代码游乐场中打开
/*eslint consistent-this: ["error", "that"]*/

var that;
function f() {
    that = this;
}

如果变量未初始化,则使用默认 "that" 选项时,此规则的正确代码示例

在代码游乐场中打开
/*eslint consistent-this: ["error", "that"]*/

var that;
that = this;

var foo, that;
foo = 42;
that = this;

何时不使用它

如果您需要捕获嵌套上下文,consistent-this 将会存在问题。这种性质的代码通常难以阅读和维护,您应该考虑重构它。

版本

此规则在 ESLint v0.0.9 中引入。

资源

更改语言