【问题标题】:Is there the syntax to shorten if statement like conditional operator?是否有像条件运算符一样缩短 if 语句的语法?
【发布时间】:2017-04-02 01:20:35
【问题描述】:

我想把这段代码写得更短:

var fn = function (a) {
    if (a) {
        somefn.call(null, a);
    }
};

使用箭头语句,它将是:

var fn = (a) => { if (a) somefn.call(null, a); };

如果使用条件运算符,我想要 more 短代码:

var fn = (a) => a ? somefn.call(null, a) : null;// null is dummy code

它并不美丽。有没有这样的语法?:

var fn = (a) => a ? somefn.call(null, a);

谢谢。

【问题讨论】:

  • 你从更短的代码中看到了什么好处?
  • var f=a=>a&&s.call(null,a); 尽可能小,但您还需要制作 somefn -> sfn 现在将是 f ... 如果f 在全局范围内,您可以通过删除 var 来节省 4 个额外的字节 ...所以现在是 f=a=>a&&s.call(null,a); ...如果您在名为 c 的函数上创建一个原型,它会执行 call,并且有var n = null; - 那么这可以更短f=a=>a&&s.c(n,a); - 我认为这是尽可能短
  • @JaromandaX:也许是为了代码高尔夫?
  • @JaromandaX:更短的代码有时可以提高可读性。
  • 查看答案。它们的可读性更高。

标签: javascript syntax conditional-operator arrow-functions


【解决方案1】:

您可以使用logical AND &&,它检查a 并调用函数,如果a 是真的。

var fn = a => a && somefn.call(null, a);

【讨论】:

    【解决方案2】:

    您的原始代码足够短,“漂亮”,希望能做您想做的事。

    你可以写这样的东西。但这不是更好的代码,更丑陋,难以理解......

    var fn = a ? function( a ) { somefn.call(null, a) ; } : function( ) { };
    

    【讨论】:

    • 不会更短。
    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多