Как можно использовать if вместо тернарного оператора в такой конструкции?

const returnAmount = (status === 'Accepted') ? undefined : returnAmountRaw - betAmount

Как можно использовать if вместо тернарного оператора в такой конструкции?


Ответы (4 шт):

Автор решения: vsemozhebuty

Вы требуете невозможного. Ваше выражение нельзя переделать в условные блоки: если объявить переменную const вне блоков, её значение нельзя будет изменить в блоках. Если её определять внутри условных блоков, она не будет видна вне их и потеряет свой смысл.

→ Ссылка
Автор решения: Qwertiy

Только с заменой const на let:

let returnAmount
if (status !== 'Accepted') returnAmount = returnAmountRaw - betAmount
→ Ссылка
Автор решения: Qwertiy

Формально это тоже ответ, хотя лучше не городить такое:

const returnAmount = (() => {
  if (status !== 'Accepted') return returnAmountRaw - betAmount
})()
→ Ссылка
Автор решения: Qwertiy

В satge 0 есть предложение про do expressions, с которым получится так:

const returnAmount = do {
  if (status !== 'Accepted') returnAmountRaw - betAmount
}

Babel его уже поддерживает при включении соответствующего флага, а при компиляции получается почти исходная конструкция:

"use strict";

const returnAmount = status !== 'Accepted' ? returnAmountRaw - betAmount : void 0;
→ Ссылка