试图缩短javascript中的条件语句

时间:2015-12-16 04:28:52

标签: javascript

我想要做的是,只有当变量f不为空时,才使用最少的字节来调用函数a。显示的函数n可以正常工作,但根据我的网络浏览器,函数m无法正常工作。浏览器声明:

  

期望的表达,得到了&#39 ;;'

然后我继续取出冒号,想想可能会有这个技巧,但我得到了错误"语法错误"。

有没有办法可以将功能n缩短到更小的尺寸并让它仍然有用,或者我应该坚持使用功能n

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

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

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

2 个答案:

答案 0 :(得分:3)

打码?

富勒<!/ em>的

*啊哈*

您可以将&&用于条件,并+将它们一起调用。

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

总字节数:24

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

答案 1 :(得分:2)

你可以使用comma operator

做一些技巧
function m(){a?(f(),g()):…}

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

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

您可以使用AND运算符的短路行为来解决该限制(请参阅What is "x && foo()"?):

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

不这样做。它使你的代码完全不可读。

  

我应该坚持使用功能n?

是的,当然。

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

如果您想缩小它,请使用one of the established minifiers而不是手动优化它。