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),因为如果在声明的开始部分,这个词比派生语句和问号更多地说明正在发生的事情。