Определите переменную в 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