尽管有观点认为,在单行if语句中放弃花括号对于可维护性和可读性来说并不理想。

但是这个呢?

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

它甚至更加压缩,如果展开,花括号也不会被忘记。是否存在明显的问题,如果没有,考虑的因素是什么?我觉得它还是很有可读性的,至少和三元运算符一样。在我看来,由于可读性,三元运算符不太被建议,尽管我觉得这个结论并不是很一致。

我内心的邪恶双胞胎想要建议这一点,尽管语法显然不是为它而设计的,而且可能只是一个坏主意。

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

当前回答

我是这样使用的:

(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");
(i === 0 ? "true" : "false")

它也可以在使用if块时使用单行完成:

if (blah)
    doThis();

它也适用于while循环。

我已经看到了&&操作符的短路行为,尽管不习惯的人可能会发现很难阅读,甚至称其为反模式:

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

就我个人而言,我经常使用单行,如果没有括号,就像这样:

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

如果我需要添加更多的语句,我将把语句放在下一行并添加括号。因为我的IDE是自动缩进的,所以这种做法的可维护性问题是没有意义的。

箭头函数示例:

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

在承诺:

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

否则:

if(somethingTrue) thenDo()

如果它只是一个简单的条件句,我更喜欢尽可能使用If (value),因为在语句开头的If这个词比旁听和问号更能说明正在发生的事情。