Javascript速记if-else并返回

时间:2012-01-29 19:37:08

标签: javascript

if-else的javascript简写可以退出函数吗?如果是这样,这将如何工作。

例如。 我有这个:

if(boolean){
 return;
}

我想把它写成:

(value)? return;

Chrome抱怨返回意外。无论如何要写这样的东西以使它有效吗?

6 个答案:

答案 0 :(得分:29)

不,除非您返回值,否则无法执行此操作。例如,如果你的函数必须返回一个你可以写的值:

return boolean ? 'foo' : 'bar';

但是你不能通过使用条件运算符返回void来停止函数的执行。

答案 1 :(得分:17)

如果你打算在执行的时候从函数返回,无论测试评估是真还是假,你都可以使用,

return (value) ? 1 : 2;

但是如果你只是希望在测试评估为真时提前返回(例如,作为一个完整性检查以防止在参数无效时执行),你可以做到的最短时间是:

if (boolean) return;

答案 2 :(得分:7)

if(boolean) return;

单行,可读,完全有效;

答案 3 :(得分:1)

我知道这是一个老问题,但我想补充说,有一种非标准的方式以速记if-else返回函数,并且执行立即调用的函数表达式( IIFE ):

function outOfFunction(boolean){

    return (boolean)?(()=>{return true;})():(()=>{return false;})();

}

console.log(outOfFunction(true));
console.log(outOfFunction(false));

如果我们想要退出该职能或继续执行其他任务:

    function shorthandExampleJustTrue(boolean){

        var someVar = "I'm out";        

        return (boolean)?(()=>{return true;})():(()=>{

          console.log("here my code ");

          console.log(someVar);

          return "anythig else";


        })();
    }

console.log(shorthandExampleJustTrue(true));
console.log(shorthandExampleJustTrue(false));

当我们使用箭头函数时,我们能够从直接函数上下文中访问变量。

答案 4 :(得分:0)

您想要ternary operator

这是:

(bool) ? ifTrue : ifFalse;

请注意:您不能省略三元运算符的else部分。

http://en.wikipedia.org/wiki/Ternary_operation

答案 5 :(得分:0)

条件“三元运算符”(condition ? expression to evaluate when true : expression to evaluate when false)通常用于简单的条件变量赋值。

如果您需要:

if( x > 0) {
   a = 10;
}else{
   a = 30;
}

你可以写:

a = (x>0)? 10 : 30; 

你可以把它想象成一个简单的函数,它接受3个参数(p1,p2,p3),如果p1为真则返回p2,如果p1为假则返回p3。

(p1)? p2 : p3;

就像这样的函数一样,它没有办法让函数根据条件返回。因此是if / else。

的简写