Для одного из вложенных тернарных выражений
currentRole ? Array.isArray(currentRole.view) ?
currentRole.view.includes(title) : false : false
Порядок приоритета слева направо или при правильном форматировании
currentRole
? Array.isArray(currentRole.view)
? currentRole.view.includes(title)
: false
: false;
Теперь его легче увидеть по индексу глубина какие значения go с каким тернарным оператором.
Эквивалентный фрагмент с использованием блоков if-else будет
if (currentRole) {
if (Array.isArray(currentRole.view)) {
return currentRole.view.includes(title);
} else {
return false;
}
} else {
return false
}
Это избыточно, хотя две ветви logi c возвращают одно и то же значение, можно упростить до
if (currentRole && Array.isArray(currentRole.view)) {
return currentRole.view.includes(title);
} else {
return false
}
или
currentRole && Array.isArray(currentRole.view)
? currentRole.view.includes(title)
: false;
или даже более просто (кредит на @ cars10m!), который полностью удаляет тернарные операторы
currentRole &&
Array.isArray(currentRole.view) &&
currentRole.view.includes(title);
Каждый условный тест должен разрешить true, чтобы продолжить обработку выражения, и результатом последнего теста будет возвращаемое значение.