繁体   English   中英

试图缩短JavaScript中的条件语句

[英]Trying to shorten a conditional statement in javascript

我在这里要做的是仅在变量a不为null的情况下使用最少的字节来调用函数f 所示的功能n可以正常使用,但是根据我的网络浏览器,功能m无法使用。 浏览器指出:

预期表达,得到“;”

然后我继续取出冒号,弄清楚也许可以解决问题,但出现错误“语法错误”。

有什么办法可以将函数n缩短为较小的大小,并且仍然可以使用?还是应该坚持使用函数n

function g(){}
function f(){}

function m(){a?f()g():;}

function n(){if(a){f();g()}}

打高尔夫球吗?

前面!

*啊哈*

您可以使用&&作为条件,和+一起使用它们。

function m(){a&&f()+g()}

总字节数:24

注意:如果fg偶然返回一个对象,则将调用任何valueOf方法,这可能会有副作用,但是在这种情况下,我认为这不太可能。

您可以使用逗号运算符来完成一些技巧:

function m(){a?(f(),g()):…}

当然,条件运算符总是需要第三个操作数,您不能只是忽略它,而可以使用任何(短)值:

function m(){a?(f(),g()):0}

您可以通过使用AND运算符的短路行为来解决该限制(请参阅什么是“ x && foo()”? ):

function m(){a&&(f(),g())}

但是不要这样 它使您的代码完全不可读。

我应该坚持使用功能n吗?

当然是。

function m() {
    if (a) {
        f();
        g();
    }
}

如果要缩小,请使用已建立的缩小器之一,而不要手动对其进行优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM