То, что вы на самом деле хотели написать, кажется
const myThing = conditionA ? conditionB ? thingA : thingB : thingC;
Однако я не рекомендую написать это, поскольку читать и писать намного сложнее как вы уже испытали. Я добавляю это просто как объяснение того, как работают условные операторы, и , надеюсь, , чтобы продемонстрировать, что вы не должны использовать их для чего-либо удаленно сложного. Я нахожу очень ограниченное применение для условного в целом и не пропущу его, если оно никогда не использовалось. Используйте if/else
вместо .
Для ясности это выражение разрешается следующим образом:
const myThing = conditionA ? (conditionB ? thingA : thingB) : thingC;
- , если
conditionA
равно true
- оцените второй условный оператор - если
conditionB
равен true
- возврат thingA
- если
conditionB
равен false
- возврат thingB
- если
conditionA
равно false
- возврат thingC
Воспроизводится в логической комбинации c, где
if (A) {
if (B) {}
}
эквивалентно объединению двух условия через AND
if (A && B) ()
Однако, вложенность выражений усложняет понимание происходящего, потому что вам необходимо мысленно отобразить все выражение , чтобы понять его. Сравните эти два
const x = A ? B ? C ? "one" : "two" : "three" : "four";
и
if (A && B && C) return "one";
if (A && B) return "two";
if (A) return "three";
return "four"
С последним вам нужно понимать только одно выражение за раз, чтобы узнать, что возвращается, с первым вам нужны все ,