Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript单行';如果';语句-最佳语法,这个替代方案?_Javascript_If Statement - Fatal编程技术网

JavaScript单行';如果';语句-最佳语法,这个替代方案?

JavaScript单行';如果';语句-最佳语法,这个替代方案?,javascript,if-statement,Javascript,If Statement,有人明确指出,尽管意见仍然如此,在一行if语句中放弃小括号对于可维护性和可读性来说并不理想 但是这个呢 if (lemons) { document.write("foo gave me a bar"); } 它甚至更加压缩,如果展开,卷括号将不会被忘记。是否存在任何明显的问题,如果没有,考虑因素是什么?我觉得它仍然非常可读,至少和三元运算符一样可读。在我看来,由于可读性的原因,三元运算符并没有得到太多的建议,尽管我觉得这个结论并不完全一致 我内心邪恶的孪生兄弟想提出这个建议,尽管语法显然不是

有人明确指出,尽管意见仍然如此,在一行
if
语句中放弃小括号对于可维护性和可读性来说并不理想

但是这个呢

if (lemons) { document.write("foo gave me a bar"); }
它甚至更加压缩,如果展开,卷括号将不会被忘记。是否存在任何明显的问题,如果没有,考虑因素是什么?我觉得它仍然非常可读,至少和三元运算符一样可读。在我看来,由于可读性的原因,三元运算符并没有得到太多的建议,尽管我觉得这个结论并不完全一致

我内心邪恶的孪生兄弟想提出这个建议,尽管语法显然不是为它而设计的,而且可能只是个坏主意

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

我见过用于实现这一点的
&&
操作员的短路行为,尽管不习惯这一点的人可能会觉得难以理解,甚至称之为反模式:

lemons && document.write("foo gave me a bar");  
就我个人而言,我经常使用不带括号的单行
if
,如下所示:

if (lemons) document.write("foo gave me a bar");
if (blah)
    doThis();
(lemons) ? alert("please give me a lemonade") : alert("then give me a beer");

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

也可以使用带有
的单行,而
循环和
if
如下:

if (lemons) document.write("foo gave me a bar");
if (blah)
    doThis();
(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");
我是这样使用它的:

if (lemons) document.write("foo gave me a bar");
if (blah)
    doThis();
(lemons) ? alert("please give me a lemonade") : alert("then give me a beer");

//另一个简单的例子

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

这条线干净多了

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

我更喜欢这个。希望它能帮助某人

箭头函数示例:

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一词比偏执和问号更能说明发生了什么

柠檬?警惕(“请给我一杯柠檬水”):警惕(“然后给我一杯啤酒”);

说明:如果
lemons
是真的,那么
alert(“请给我一杯柠檬水”)
,如果不是,那么
alert(“然后给我一杯啤酒”)
就像很多人说的,如果你正在寻找一条真正的1行,那么:

    if (Boolean_expression) do.something();
是首选。然而,如果你想做一个if/else,那么三元是你的朋友(也是超级酷):

此外:

然而,我看到了一个非常酷的例子。向“彼得·奥斯尔森”喊叫&&

    (Boolean_expression) && do.something();
最后,它不是if语句,而是使用map/reduce或Promise.resolve()在循环中执行操作也很有趣。向布鲁内丹喊道

**Old Method:**
if(x){
   add(x);
}
New Method:
x && add(x);

即使是赋值操作,我们也可以使用圆括号

exp.includes('regexp_replace') && (exp = exp.replace(/,/g, '@&'));

如前所述,您可以使用:

&&风格 或

无括号样式 短路回路 但是,如果希望使用单行
If
语句来短路函数,则需要使用无括号版本,如下所示:

if (lemons) return "foo gave me a bar";
作为


将为您提供一个
语法错误:意外的关键字“return”

我已经看到了许多支持使用三元运算符的答案。如果a)你有一个替代选项,b)你从一个简单的条件返回一个相当简单的值,那么三元函数是很好的。但是

原来的问题没有其他选择,只有一个(实)分支的三元运算符迫使您返回一个捏造的答案

柠檬?“福给了我一个酒吧”:“谁知道你会得到什么”

我认为最常见的变异是
柠檬?“foo…“:”
,而且,正如你从阅读关于真、假、真、假、空、空(有我们没有?)的任何语言的无数文章中所知道的,你正在进入一个雷区(尽管这是一个有充分证明的雷区)

一旦三元数的任何部分变得复杂,最好使用更明确的条件形式


要说我投票支持
if(lemons)“foo”
,还有很长的路要走

如果JavaScript支持词尾条件,那就太好了:
document.write(“我的邪恶孪生兄弟出现”)if lemons
我想你可能在考虑简短的if,else语句。(
变量=(条件)?真值:假值;
)祝你好运。我喜欢后者。感谢您的输入和一个更具创造性的选择上的第一!您应该知道您期望的是什么,因为空字符串和0是错误的值,它将无法执行第二条语句当然,您也可以在there@PeterOlson为什么可维护性异议没有意义?如果其他开发人员碰巧没有在IDE的配置中使用IDE,该怎么办?感谢您勇敢地支持没有括号的单行if语句。总有一天,我们的孩子会感谢你。这将使linting失败,不推荐OP也要求使用一行程序。你不需要在
lemon
上加括号。最好的做法是在条件语句周围加上()以消除其他开发人员对操作顺序等的任何混淆。我通常会在指定它时出错,除非有资格的人没有办法弄糊涂。
document.write(lemon?“foo”给了我一个条):“if condition is FALSE”):)我喜欢括号,因为它们意味着布尔强制<代码>变量a=11;警报(a==10)?@ManuKaracho我在使用三元语句时经常看到这个问题。我知道OP可能只是想写一个简单的,但它在我工作时读到的代码中非常猖獗。
alert(a==10?:“true:“false”)
@JoshWood该警报也会打印布尔值,所以你可以像Manu说的那样做
alert(a==10)
alert(柠檬?:“请给我一杯柠檬水”:“然后给我一杯啤酒”)
很好的解决方案。
柠檬?警惕(“请给我一个警告