consistent-this
Обеспечивает единообразие именования при сохранении текущего контекста выполнения
Это правило в настоящее время заморожено, и запросы на новые возможности не принимаются.
Часто возникает необходимость сохранить текущий контекст выполнения, чтобы использовать его позднее. Яркий пример — обратные вызовы jQuery:
const 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при инициализации или позднее, её имя должно быть одним из указанных псевдонимов.
Параметры
Это правило принимает одну или несколько строковых опций:
- указанные псевдонимы для
this(по умолчанию"that")
Примеры неправильного кода для этого правила с опцией "that" по умолчанию:
/*eslint consistent-this: ["error", "that"]*/
let ;
let ;
;
;
Примеры правильного кода для этого правила с опцией "that" по умолчанию:
/*eslint consistent-this: ["error", "that"]*/
let that = this;
const self = 42;
let foo;
that = this;
foo.bar = this;
Примеры неправильного кода для этого правила с опцией "that" по умолчанию, если переменная не инициализирована:
/*eslint consistent-this: ["error", "that"]*/
let ;
function f() {
that = this;
}
Примеры правильного кода для этого правила с опцией "that" по умолчанию, если переменная не инициализирована:
Объявление переменной that и присваивание ей this.
/*eslint consistent-this: ["error", "that"]*/
let that;
that = this;
Объявление двух переменных, foo и that, причём foo инициализирована, а затем присваивание this переменной that.
/*eslint consistent-this: ["error", "that"]*/
let foo = 42, that;
that = this;
Когда не следует использовать это правило
Если вам нужно сохранить вложенный контекст, consistent-this может создать проблемы. Такой код обычно сложно читать и поддерживать, поэтому стоит рассмотреть возможность его рефакторинга.
Версия
Это правило появилось в ESLint v0.0.9.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/consistent-this