В общем заголовок вопроса полностью исчерпывающий. Просто хочу понять, почему в javascript нельзя писать условия if через "a === (b || c)", типа:
var a = 2,
b = 2,
c = 3;
if (a === (b || c)) {
console.log(a)
}
return null
Или иначе, если это не реализуемо:
if (a === b || b === c)Писать условие a === b || b === c как b === (a || c) нельзя по той простой причине что эти выражения не эквивалентны. В Javascript операции выполняются не в том порядке в котором они "выполняются" в русском языке, а в соответствии с фиксированными приоритетами и довольно простой грамматикой. Конкретно в выражении b === (a || c) сначала вычисляется a || c - в результате чего получается одно число, с которым и сравнивается b. Для того чтобы сравнить b с двумя числами, надо выполнить два сравнения.
Вообще, условие a === b || b === c по своей форме довольно простое и нет смысла пытаться упрощать его.
Но если по какой-то причине дублировать b нежелательно (например, пишется Write-Only однострочник) - можно использовать массив и метод includes: [a, c].includes(b)
let test = (a, b, c) => {
return (a === (b || c));
}
console.info(test(2, 2, 3));
console.info(test(2, 2));
console.info(test(2, undefined, 3));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости