@laravel_creative_3103

Что делать, если много условностей? ?? :: :, и как правильно его читать? Можно ли ссылку на статью какую нибудь?

isError ? !this.isEmpty(formData.error.decision.result) ? formData.error.decision.result ? 'errorTab' : 'noTab' : 'noTab' : 'noTab'


Условно есть такой код, условности, как бы его правильно прочитать? т.е последовательно
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 2
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Ответ написан
Комментировать
Alexandroppolus
@Alexandroppolus
кодир
Вложенные тернарники легко читаются, только если они "линейные". То есть когда в выражении C ? A : B выражение А не содержит в себе тернарник.

Твой пример можно переписать так:
!isError ? 'noTab' :
    this.isEmpty(formData.error.decision.result) ? 'noTab' :
    !formData.error.decision.result ? 'noTab' :
    'errorTab' ;


я просто инвертировал все условия. И теперь тернарник читается строго по порядку: если первое условие истинно, вернуть первое значение и не смотреть дельше. Если второе условие истинно, вернуть второе значение и не смотреть дельше. И т.д. Аналог "быстрого выхода", как в https://qna.habr.com/q/1289362
Сравни это с исходным вариантом, где самое последнее значение относилось к первому условию, хотя отстояло от него на километр.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы