我想要做的是,只有当变量f
不为空时,才使用最少的字节来调用函数a
。显示的函数n
可以正常工作,但根据我的网络浏览器,函数m
无法正常工作。浏览器声明:
期望的表达,得到了&#39 ;;'
然后我继续取出冒号,想想可能会有这个技巧,但我得到了错误"语法错误"。
有没有办法可以将功能n缩短到更小的尺寸并让它仍然有用,或者我应该坚持使用功能n
?
function g(){}
function f(){}
function m(){a?f()g():;}
function n(){if(a){f();g()}}
答案 0 :(得分:3)
打码?
富勒<!/ em>的
*啊哈*
您可以将&&
用于条件,并+
将它们一起调用。
function m(){a&&f()+g()}
注意:如果偶然f
或g
返回一个对象,则会调用任何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而不是手动优化它。