Как уже упоминалось в другом ответе, это связано с приоритетом оператора.
valOne || valTwo ? priorityNum : PRIORITIES.low;
- это то же самое, что и
(valOne || valTwo) ? priorityNum : PRIORITIES.low;
, но вы хотели:
valOne || (valTwo ? priorityNum : PRIORITIES.low);
Поскольку большинство не запоминает приоритет для более 20 операторов, избегайте этих ошибок, используя больше скобок (как показано выше) или больше переменных:
const PRIORITIES = {
high: 'HIGH',
low: 'LOW',
};
const NUM_TO_PRIORITY = {
0: 'high',
1: 'low',
};
const priorityNum = 0;
const priority = PRIORITIES[NUM_TO_PRIORITY[priorityNum]]
const otherVal = Object.values(PRIORITIES).includes(priorityNum) ? priorityNum : PRIORITIES.low
priority || otherVal; // "HIGH"