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
有许多常用的别名,例如 that
、self
或 me
。希望确保团队商定的任何别名在整个应用程序中始终如一地使用。
规则详细信息
此规则强制执行有关具有指定 this
别名的变量的两个内容
- 如果声明了具有指定名称的变量,则它必须在声明中进行初始化(在声明中)或赋值(在与声明相同的范围内)。
- 如果变量被初始化或赋值为
this
,则变量的名称必须是指定的别名。
选项
此规则具有一个或多个字符串选项
this
的指定别名(默认值"that"
)
此规则使用默认 "that"
选项的不正确代码示例
在游乐场中打开
/*eslint consistent-this: ["error", "that"]*/
var ;
var ;
;
;
此规则使用默认 "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 中引入的。