Dav*_*obs 176 javascript if-statement
虽然意见不言而喻,但在单行if语句中放弃大括号并不是理想的可维护性和可读性.
但是这个怎么样?
if (lemons) { document.write("foo gave me a bar"); }
它甚至更加压缩,如果扩展,花括号将不会被遗忘.有没有明显的问题,如果没有,有什么考虑?我觉得它仍然非常易读,至少和三元运算符一样多.在我看来,由于可读性,三元运算符的建议并不多,尽管我觉得这个结论并不是那么一致.
在我这个邪恶的双胞胎想要建议这一点,虽然语法显然不适合它,并且可能只是一个坏主意.
(syntax) ? document.write("My evil twin emerges"): "";
Pet*_*son 301
我已经看到了&&用于实现此目的的操作员的短路行为,尽管不习惯这种情况的人可能会发现难以阅读甚至将其称为反模式:
lemons && document.write("foo gave me a bar");  
就个人而言,我经常使用if没有括号的单行,如下所示:
if (lemons) document.write("foo gave me a bar");
如果我需要添加更多语句,我会将语句放在下一行并添加括号.由于我的IDE会自动缩进,因此对这种做法的可维护性反对意见没有实际意义.
小智 122
我这样使用它:
(lemons) ? alert("please give me a lemonade") : alert("then give me a beer");
小智 39
您可以使用PHP中常用的格式:
(lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE");
Mar*_*arc 24
如前所述,您可以使用:
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'
小智 13
//另一个简单的例子
 var a = 11;
 a == 10 ? alert("true") : alert("false");
sha*_*e93 13
这一行更清洁.
if(dog) alert('bark bark');
我更喜欢这个.希望它可以帮到某人
可以用这个
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") 
我已经看到很多答案,其中有很多人赞成使用三元运算符。如果 a) 您确实有替代选项并且 b) 您从一个简单的条件中返回一个相当简单的值,则三元是很棒的。但...
最初的问题没有替代方案,只有一个(真实)分支的三元运算符迫使您返回一个完美的答案。
lemons ? "foo gave me a bar" : "who knows what you'll get back"
我认为最常见的变体是lemons ? 'foo...' : '',并且,正如您通过阅读有关 true、false、truthy、falsey、null、nil、blank、empty(有我们没有?)的任何语言的无数文章而知道的,您正在进入一个雷区(尽管有据可查的雷区。)
一旦三元的任何部分变得复杂,您最好使用更明确的条件形式。
很长的路要说我投票支持if (lemons) "foo".
if当使用如下块时,也可以使用单行来完成:
if (blah)
    doThis();
它也适用于while循环。
小智 6
就像很多人说的那样,如果您要查找实际的1行,那么:
    if (Boolean_expression) do.something();
是首选。但是,如果您要进行if / else运算,那么三元是您的朋友(而且非常酷):
    (Boolean_expression) ? do.somethingForTrue() : do.somethingForFalse();
也:
    var something = (Boolean_expression) ? trueValueHardware : falseATRON;
但是,我看到了一个非常酷的例子。为&&喊@ Peter-Oslson
    (Boolean_expression) && do.something();
最后,它不是if语句,而是使用map / reduce或Promise.resolve()在循环中执行操作很有趣。向@brunettdan喊
| 归档时间: | 
 | 
| 查看次数: | 339351 次 | 
| 最近记录: |