Spec-Zone.ru › ESLint

no-unneeded-ternary

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

🔧 Исправимо

Некоторые проблемы, выявленные этой правилами, могут быть автоматически исправлены с помощью опции --fix командной строки

В JavaScript часто допускается ошибка использования условного выражения для выбора между двумя булевыми значениями вместо использования ! для преобразования проверки в булево значение. Вот несколько примеров:

// Bad
var isYes = answer === 1 ? true : false;

// Good
var isYes = answer === 1;

// Bad
var isNo = answer === 1 ? false : true;

// Good
var isNo = answer !== 1;

Еще одной распространённой ошибкой является использование одной переменной как для проверки условия, так и для следствия. В таких случаях можно использовать логическое OR для достижения такой же функциональности. Вот пример:

// Bad
foo(bar ? bar : 1);

// Good
foo(bar || 1);

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

Это правило запрещает использование тернарных операторов, когда существуют более простые альтернативы.

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

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

var a = x === 2 ? true : false;

var a = x ? true : false;

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

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

var a = x === 2 ? "Yes" : "No";

var a = x !== false;

var a = x ? "Yes" : "No";

var a = x ? y : x;

f(x ? x : 1); // default assignment - would be disallowed if defaultAssignment option set to false. See option details below.

Опции

Это правило имеет объект опций:

  • "defaultAssignment": true (по умолчанию) разрешает использование условного выражения в качестве шаблона по умолчанию для присваивания
  • "defaultAssignment": false запрещает использование условного выражения в качестве шаблона по умолчанию для присваивания

defaultAssignment

При установке в значение true, по умолчанию, опция defaultAssignment разрешает выражения вида x ? x : expr (где x — любой идентификатор, а expr — любое выражение).

Примеры дополнительного неправильного кода для этого правила с опцией { "defaultAssignment": false }:

Открыть в Playground
/*eslint no-unneeded-ternary: ["error", { "defaultAssignment": false }]*/

var a = x ? x : 1;

f(x ? x : 1);

Обратите внимание, что defaultAssignment: false всё ещё разрешает выражения вида x ? expr : x (где идентификатор находится в правой части тернарного оператора).

Когда не следует использовать это правило

Вы можете отключить это правило, если не беспокоитесь о ненужной сложности в условных выражениях.

Связанные правила

  • no-ternary
  • no-nested-ternary

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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