JavaScript单行'if'语句 – 最好的语法,这种替代?

尽pipe人们认为, if陈述对于可维护性和可读性来说并不理想, if放在一行上的大括号是明确的。

但是这个呢?

 if (lemons) { document.write("foo gave me a bar"); } 

它更加压缩,如果扩展,大括号不会被遗忘。 有没有公​​然的问题,如果不是,有什么考虑? 我觉得它仍然是非常可读的,至less和三元操作符一样。 在我看来,由于可读性的原因,三元运算符没有太多build议,尽pipe我觉得这个结论并不是一致的。

在我这个邪恶的双胞胎想要提出这个build议,虽然语法显然不是为了它,可能是一个坏主意。

 (syntax) ? document.write("My evil twin emerges"): ""; 

我已经看到了&&操作符用来达到这个目的的短路行为,尽pipe不熟悉这个的人可能会觉得很难阅读,甚至称之为反模式:

 lemons && document.write("foo gave me a bar"); 

就个人而言, if没有括号,我会经常使用单行,如下所示:

 if (lemons) document.write("foo gave me a bar"); 

如果我需要添加更多的语句,我会把语句放在下一行并添加括号。 由于我的IDE做自动缩进,可维护性对这种做法的反对是没有意义的。

我这样使用它:

 (lemons) ? alert("please give me a lemonade") : alert("then give me a beer"); 

您可以使用这种在PHP中常用的格式:

 (lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE"); 

//另一个简单的例子

  var a = 11; a == 10 ? alert("true") : alert("false"); 

这一条线要干净得多。

 if(dog) alert('bark bark'); 

我更喜欢这个。 希望它可以帮助别人

也可以使用while循环的单行来完成, if像这样:

 if (blah) doThis(); 

它也适用于while循环。

可以用这个,

 lemons ? alert("please give me a lemonade") : alert("then give me a beer"); 

解释:如果lemons存在,你会得到警觉(“请给柠檬水”), else会得到警觉(“然后给我一杯啤酒”)

箭头函数中的示例:

 let somethingTrue = true [1,2,3,4,5].map(i=>somethingTrue && i*2) 

承诺:

 Promise.resolve() .then(_=>checkTrueFalse && asyncFunc()) .then(_=>{ .. }) 

除此以外:

 if(somethingTrue) thenDo() 

如果它只是一个简单的条件,我宁愿尽可能使用if(value),因为如果在声明的开始部分,这个词比派生语句和问号更多地说明正在发生的事情。