Spec-Zone.ru › ESLint

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" по умолчанию:

Открыть в Playground
/*eslint consistent-this: ["error", "that"]*/

let that = 42;

let self = this;

that = 42;

self = this;

Примеры правильного кода для этого правила с опцией "that" по умолчанию:

Открыть в Playground
/*eslint consistent-this: ["error", "that"]*/

let that = this;

const self = 42;

let foo;

that = this;

foo.bar = this;

Примеры неправильного кода для этого правила с опцией "that" по умолчанию, если переменная не инициализирована:

Открыть в Playground
/*eslint consistent-this: ["error", "that"]*/

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

Примеры правильного кода для этого правила с опцией "that" по умолчанию, если переменная не инициализирована:

Объявление переменной that и присваивание ей this.

Открыть в Playground
/*eslint consistent-this: ["error", "that"]*/

let that;
that = this;

Объявление двух переменных, foo и that, причём foo инициализирована, а затем присваивание this переменной that.

Открыть в Playground
/*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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API