JavaScript单行’if’语句-最佳语法,这是替代方法吗?[关闭]

2020/10/15 00:01 · javascript ·  · 0评论

尽管仍然有意见,但已经明确指出,在单行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");

如果需要添加更多语句,则将语句放在下一行并添加方括号。由于我的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");

这一条线清洁得多。

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

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

可以用这个

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

说明:如果lemons为true alert("please give me a lemonade"),则为true ,否则为false alert("then give me a beer")

//另一个简单的例子

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

就像很多人说的那样,如果您要查找实际的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喊

如前所述,您可以使用:

&&风格

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'

我已经看到很多答案,很多人赞成使用三元运算符。如果a)您确实有一个替代选项,并且b)您从简单条件中返回了一个相当简单的值,则三元数很好。但...

原始问题没有其他选择,只有一个(真实)分支的三元运算符会迫使您返回一个确定的答案。

lemons ? "foo gave me a bar" : "who knows what you'll get back"

我认为最常见的变化是lemons ? 'foo...' : '',并且,如您从阅读的各种语言的各种文章中了解到的一样,包括true,false,true,false,null,nil,null,null,null,empty(带有我们的无符号),您将进入一个雷区(尽管有据可查的雷区。)

只要三元组的任何部分变得复杂,您就可以使用更明确的条件形式来改善状况。

说我要投票很长的路要走if (lemons) "foo"

也可以使用带有while循环的单行来完成if如下所示:

if (blah)
    doThis();

它也可以与while循环一起使用。

箭头功能示例:

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一词比括号和问号更能说明正在发生的事情。

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

即使分配操作,我们也可以使用圆括号

exp.includes('regexp_replace') && (exp = exp.replace(/,/g, '@&'));
(i === 0 ? "true" : "false")
本文地址:http://javascript.askforanswer.com/javascriptdanxingifyuju-zuijiayufazheshitidaifangfamaguanbi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!