# 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 会出现问题。这种性质的代码通常难以阅读和维护,您应该考虑对其进行重构。

Last Updated: 5/13/2023, 8:55:38 PM