Было ясно сформулировано, хотя, тем не менее, мнение, что отказ от фигурных скобок в однострочном if
выражении не идеален для удобства обслуживания и удобочитаемости.
Но как насчет этого?
if (lemons) { document.write("foo gave me a bar"); }
Он еще более сжат, и если его развернуть, фигурные скобки не будут забыты. Есть ли какие-то вопиющие проблемы, и если нет, каковы соображения? Я чувствую, что это все еще очень читабельно, по крайней мере, так же, как и троичный оператор в любом случае. Мне кажется, что троичные операторы не так часто предлагаются из-за читабельности, хотя я чувствую, что этот вывод не столь единодушен.
Злой близнец во мне хочет предложить это, хотя синтаксис явно не предназначен для этого, и, вероятно, это просто плохая идея.
(syntax) ? document.write("My evil twin emerges"): "";
javascript
if-statement
Дэвид Хобс
источник
источник
document.write("My evil twin emerges") if lemons
variable = (condition) ? true-value : false-value;
.) Удачи.Ответы:
Я видел короткое замыкание, используемое
&&
оператором для достижения этой цели, хотя людям, которые не привыкли к этому, может быть трудно прочитать или даже назвать это анти-паттерном:Лично я часто буду использовать однострочные
if
без скобок, например:Если мне нужно добавить больше утверждений, я помещу их в следующую строку и добавлю скобки. Поскольку в моей среде IDE выполняется автоматическое отступление, возражения по поводу ремонтопригодности для этой практики являются спорными.
источник
Я использую это так:
источник
alert(lemons?"please give me a lemonade":"then give me a beer")
Вы можете использовать этот формат, который обычно используется в PHP:
источник
lemon
.document.write(lemon ? "foo gave me a bar" : "if condition is FALSE");
:)Эта строка намного чище.
Я предпочитаю это. надеюсь, это поможет кому-то
источник
можете использовать это,
объяснение: если
lemons
есть, то дайте мнеalert("please give me a lemonade")
else
alert("then give me a beer")
источник
lemons? alert("please give me a fancy beer with a lemon wedge in it"): alert(please give me a beer")
FTFY// Еще один простой пример
источник
var a = 11; alert(a === 10);
?alert(a === 10 ? "true" : "false")
alert(a===10)
как сказал Ману.Как говорили многие люди, если вы ищете фактическую 1 строку, то:
является предпочтительным. Однако, если вы хотите сделать if / else, то ternary - ваш друг (и тоже супер круто):
ТАКЖЕ:
Однако я увидел один очень крутой пример. Кричит @ Питер-Олсон для &&
Наконец, это не оператор if, но выполнение вещей в цикле с помощью map / redu или Promise.resolve () тоже забавно. Кричит @brunettdan
источник
Как уже было сказано, вы можете использовать:
&& стиль
или
стиль без скобок
возврат короткого замыкания
Однако, если вы хотите использовать однострочный
if
оператор для короткого замыкания функции, вам нужно использовать версию без скобок, например, так:так как
даст вам
SyntaxError: Unexpected keyword 'return'
источник
lemons
(если это неверно) - вы хотите возвращать «foo дал мне бар» только тогда, когдаlemons
это правда.Я видел много ответов со многими голосами, выступающими за использование троичного оператора. Тернарка хороша, если а) у вас есть альтернативный вариант и б) вы возвращаете довольно простое значение из простого условия. Но...
У исходного вопроса не было альтернативы, и троичный оператор с единственной (реальной) ветвью вынуждает вас возвращать придуманный ответ.
lemons ? "foo gave me a bar" : "who knows what you'll get back"
Я думаю, что наиболее распространенным вариантом является
lemons ? 'foo...' : ''
, и, как вы узнаете, прочитав множество статей для любого языка на истину, ложь, правду, ложь, ноль, ноль, пусто, пусто (с нашим без?), Вы входите минное поле (хотя и хорошо задокументированное минное поле)Как только какая-либо часть троичной системы усложняется, вам лучше использовать более явную условную форму.
Долгий способ сказать, за что я голосую
if (lemons) "foo"
.источник
Это также можно сделать, используя одну строку с
while
циклами иif
вот так:Это также работает с
while
петлями.источник
Пример в функциях стрелок:
В обещаниях:
В противном случае:
Если это просто условное выражение , я предпочитаю использовать if (значение) везде, где это возможно, потому что слово if в начале утверждения говорит больше о том, что происходит, чем парантезе и вопросительных знаках.
источник
Даже назначить операцию также мы можем сделать с круглыми скобками
источник