Определите переменную в JavaScript как блок

В Swift я могу сделать это, чтобы определить 9X_js переменную:

let foo: String = {
    if bar {
        return "42"
    } else {
        return "43"
    }
}()

Как я могу определить подобную 9X_javascript переменную в JavaScript? Я знаю, что вы 9X_javascript-library можете определить переменную как неопределенную 9X_vanilla-javascript и переопределить ее в блоке if, но это уродливый 9X_vanillajs синтаксис IMO, поскольку "foo" будет 9X_vanillajs повторяться 3 раза вместо 1 в примере Swift:

let foo

if (bar) {
    foo = "42"
} else {
    foo = "43"
}

2
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Определите переменную в JavaScript как блок

Если логика достаточно короткая, вы можете 9X_javascript использовать условный оператор:

let foo = bar ? "42" : "43"

Если логика 9X_javascript-disabled сложнее, то я лично сделал бы последний 9X_vanilla-javascript показанный вами пример. Но есть еще одна 9X_vanillajs альтернатива, которую вы могли бы рассмотреть, — это 9X_js использование immediately invoked function expression:

let foo = (() => {
  if (bar) {
    return "42"
  } else {
    return "43"
  }
})()

Это создает анонимную функцию, вызывает 9X_vanillajs ее немедленно, а затем все, что она возвращает, назначается 9X_js foo.

16
0

Ответ #2

Ответ на вопрос: Определите переменную в JavaScript как блок

Если вы просто устанавливаете значение условно, вы 9X_vanilla-javascript можете использовать троичное выражение:

const foo = bar ? '42' : '43'

Вы 9X_javascript можете использовать функцию для более сложной 9X_vanilla-js логики:

let bar = true;
const foo = computeFoo(bar);

function computeFoo(bar) {
  if (bar) {
    return "42";
  }
  return "43";
}

console.log(foo); // 42

Или IIFE:

let bar = true;
const foo = (() => {
  if (bar) {
    return "42";
  }
  return "43";
})()

console.log(foo); // 42

11
0

Ответ #3

Ответ на вопрос: Определите переменную в JavaScript как блок

Вы можете использовать оператор ternary:

let variable = true ? "A" : "B"

В вашем 9X_.js случае:

let foo = bar ? '42' : '43'

2
0