Определите переменную в 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" }
Ответ #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
.
Ответ #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
Ответ #3
Ответ на вопрос: Определите переменную в JavaScript как блок
Вы можете использовать оператор ternary:
let variable = true ? "A" : "B"
В вашем 9X_.js случае:
let foo = bar ? '42' : '43'
-
13
-
6
-
6
-
12
-
38
-
9
-
5
-
18
-
5
-
5
-
6
-
8
-
5
-
7
-
41
-
10
-
10
-
27
-
9
-
20
-
15
-
12
-
41
-
8
-
9
-
12
-
43
-
4
-
7
-
24
-
3
-
20
-
9
-
23
-
11
-
10
-
7
-
4
-
5
-
25
-
6
-
11
-
10
-
86
-
4
-
4
-
25
-
20
-
13
-
8