Не безрезультатно веду пропаганду никогда не использовать тернарные операторы. if-else блоки более читаемы и понятны. В подтверждение приведу примерный код, который недавно пришлось править:
(true) ? (() => {
// some pre
})() : void(0)
Зачем так писать? Непонятно. Если требуется один if, тогда позвольте писать хотя бы так:
(true) && (() => {
// some pre
})()
А теперь сравните с привычным if:
if (true) {
console.log(42)
}
С другой стороны, используя тернарные операторы можно делать такие конструкции:
const foo = (true) ? (() => 'bar')() : (() => 42)()
Вместо таких:
let foo
if (true) {
foo = 'bar'
} else {
foo = 42
}
Около полугода назад пришел к мысли что неплохо было бы вообще исключить использование let и var, заменив их на const во всех случаях. В случаях с неизвестной заранее переменной:
let x
if (some) {
x = 'foo'
} else {
x = 'bar'
}
Инициализировать ее через самовызывающуюся функцию:
const x = (() => {
if (some) {
return 'foo'
} else {
return 'bar'
}
}
Надеюсь, эта информация будет вам полезна, и вы избежите часть проблем, сделав свой код более стабильным.