Темнарный оператор – это хороший способ написать краткие целевые задания без необходимости писать более длинные Если/else
Отказ Например:
// This... let value; if (test) value = 1; else valeu = 2; // can be written as this: const value = test ? 1 : 2;
Однако легко злоупотреблять Тернарным оператором для вещей, где более простые операторы часто могут быть лучшим выбором. Так вот несколько альтернатив для распространенных ошибок.
Статические истинные/ложные задания:
const value = test ? true : false; // can be replaced by boolean casting: const value = !!test; // or even const value = Boolean(test); // I prefer the shorter alternative
Значение Nullable (Falsy Case)
const value = test ? test : null; // can be written like this const value = test || null;
ПРИМЕЧАНИЕ. Код выше вернет NULL до тех пор, пока Тест
это Falsy Отказ
Значение Nullable (Nulish Case)
const value = test !== null || test !== undefined ? test : null; // can be written like this: const value = test ?? null;
Смотрите: Nullish Coalescing оператор (??)
Кстати…
const test = a === null || a === undefined; // can be simplified as: const test = a == null;
Проверка на неопределенный
Я видел это несколько раз. Я обещаю.
const value = obj ? obj.a : undefined; // which can simply be: const value = obj && obj.a; // or in more recent implementations: const value = obj?.a;
Смотрите: Дополнительное цепочка (?.) [Оператор Элвиса]
Темный (но не на самом деле тройной) оператор
Это моя любимая, а также честная ошибка. Некоторые люди получают пересечение с простотой Тернарного оператора и могут подумать, что это просто «короче» Если/else
утверждение.
let value; test ? value = 8 : null; // when they meant if (test) value = 8;
Однострочный Если
Заявление простое и достаточно чисто для этой цели, и мы знаем тестовое задание ?
не будет работать. Темнарный оператор должен иметь еще
возвращаемое значение. Если вам это не нужно, используйте однострочный Если
Отказ
Упаковка …
В двух словах, если ваш тройной оператор не имеет структуры, такой как приведенная ниже, вы должны поднять бровь и проверять, действительно ли нет других простых альтернатив.
const value = test ? otherValue : anotherValue;
Можете ли вы подумать о других примерах, которые вы видели о плохом использовании Тернарного оператора? Пожалуйста, дайте мне знать в комментариях ниже.
Оригинал: “https://dev.to/saulodias/ternary-operator-better-alternatives-2ind”