[英]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()}
注意:如果f
或g
偶然返回一个对象,则将调用任何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.