Было четко указано, хотя и мнение, тем не менее, что отклонение фигурных скобок в одном выражении if
не идеально подходит для удобства и удобочитаемости.
Но как насчет этого?
if (lemons) { document.write("foo gave me a bar"); }
Он еще более сжат, и если он будет расширен, фигурные скобки не будут забыты. Есть ли вопиющие проблемы, а если нет, то каковы соображения? Я чувствую, что он все еще очень читабельен, по крайней мере, как троянский оператор. Мне кажется, что троянные операторы не так рекомендуются из-за удобочитаемости, хотя я чувствую, что вывод не совсем единодушный.
Злой близнец во мне хочет предложить это, хотя синтаксис явно не предназначен для этого, и, вероятно, это просто плохая идея.
(syntax) ? document.write("My evil twin emerges"): "";
Ответ 1
Я видел короткозамкнутое поведение оператора &&
, используемого для достижения этого, хотя люди, которые не привыкли к этому, могут быть трудными для чтения или даже назвать его анти-шаблоном:
lemons && document.write("foo gave me a bar");
Лично я часто использую однострочный if
без скобок, например:
if (lemons) document.write("foo gave me a bar");
Если мне нужно добавить больше операторов, я поставлю инструкции на следующей строке и добавлю скобки. Поскольку моя IDE выполняет автоматическое отступы, возражения по поддержке, связанные с этой практикой, являются спорными.
Ответ 2
Я использую его следующим образом:
(lemons) ? alert("please give me a lemonade") : alert("then give me a beer");
Ответ 3
Вы можете использовать этот формат, который обычно используется в PHP:
(lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE");
Ответ 4
//Еще один простой пример
var a = 11;
a == 10 ? alert("true") : alert("false");
Ответ 5
Эта строка намного чище.
if(dog) alert('bark bark');
Я предпочитаю это. надеюсь, что это поможет кому-то
Ответ 6
Как говорили многие люди, если вы ищете фактическую 1 строку, то:
if (Boolean_expression) do.something();
является предпочтительным. Однако, если вы хотите сделать if/else, то ternary - ваш друг (и тоже супер круто):
(Boolean_expression) ? do.somethingForTrue() : do.somethingForFalse();
ТАКЖЕ:
var something = (Boolean_expression) ? trueValueHardware : falseATRON;
Однако я видел один очень крутой пример. Кричит @Питер-Олсон для &&
(Boolean_expression) && do.something();
Наконец, это не оператор if, но выполнение вещей в цикле с помощью map/redu или Promise.resolve() тоже забавно. Кричит @brunettdan
Ответ 7
можете использовать это,
lemons ? alert("please give me a lemonade") : alert("then give me a beer");
Объяснение: если lemons
существуют, дайте мне alert("please give me a lemonade")
else
alert("then give me a beer")
Ответ 8
Он также может быть выполнен с использованием одной строки с циклами while
и if
следующим образом:
if (blah)
doThis();
Он также работает с циклами while
.
Ответ 9
Пример в стрелочных функциях:
let somethingTrue = true
[1,2,3,4,5].map(i=>somethingTrue && i*2)
В promises:
Promise.resolve()
.then(_=>checkTrueFalse && asyncFunc())
.then(_=>{ .. })
В противном случае:
if(somethingTrue) thenDo()
Если это просто условное условие, я предпочитаю использовать if (value), когда это возможно, потому что слово , если в начале заявления говорит больше о том, что происходит, чем о парантесе и вопросительные знаки.
Ответ 10
**Old Method:**
if(x){
add(x);
}
New Method:
x && add(x);
Даже назначить операцию также мы можем сделать с круглыми скобками
exp.includes('regexp_replace') && (exp = exp.replace(/,/g, '@&'));
Ответ 11
Как уже было сказано, вы можете использовать:
&& стиль
lemons && document.write("foo gave me a bar");
или же
стиль без скобок
if (lemons) document.write("foo gave me a bar");
возврат короткого замыкания
Однако, если вы хотите использовать однострочный оператор if
для короткого замыкания функции, вам нужно использовать версию без скобок, например:
if (lemons) return "foo gave me a bar";
как
lemons && return "foo gave me a bar"; // does not work!
выдаст SyntaxError: Unexpected keyword 'return'