Spec-Zone.ru › ESLint

no-self-compare

Запрещает сравнения, в которых обе стороны полностью совпадают

Сравнение переменной с самой собой обычно является ошибкой — опечаткой или ошибкой при рефакторинге. Оно сбивает читателя с толку и может привести к ошибке во время выполнения.

Единственный случай, когда можно сравнивать переменную с самой собой, — это проверка на NaN. Однако в этом случае гораздо уместнее использовать typeof x === 'number' && isNaN(x) или функцию Number.isNaN из ES2015, а не заставлять читателя кода догадываться о цели такого сравнения.

Подробное описание правила

Это предупреждение указывает на потенциально запутанный и, возможно, бессмысленный фрагмент кода. Почти не бывает ситуаций, в которых требуется сравнивать что-либо с самим собой.

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint no-self-compare: "error"*/

let x = 10;
if (x === x) {
    x = 20;
}

Параметры

У этого правила нет параметров.

Известные ограничения

Это правило напрямую сравнивает токены по обе стороны от оператора. Оно считает их проблематичными, если их структура полностью совпадает. Однако правило не учитывает возможные побочные эффекты и то, что функции могут возвращать разные объекты, даже если вызваны с одинаковыми аргументами. В результате в некоторых случаях оно может выдавать ложные срабатывания, например:

Открыть в Playground
/*eslint no-self-compare: "error"*/

function parseDate(dateStr) {
  return new Date(dateStr);
}

if (parseDate('December 17, 1995 03:24:00') === parseDate('December 17, 1995 03:24:00')) {
  // do something
}

let counter = 0;
function incrementUnlessReachedMaximum() {
  return Math.min(counter += 1, 10);
}

if (incrementUnlessReachedMaximum() === incrementUnlessReachedMaximum()) {
  // ...
}

Версия

Это правило добавлено в ESLint v0.0.9.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-self-compare

Spec-Zone.ru

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