if-else的javascript简写可以退出函数吗?如果是这样,这将如何工作。
例如。 我有这个:
if(boolean){
return;
}
我想把它写成:
(value)? return;
Chrome抱怨返回意外。无论如何要写这样的东西以使它有效吗?
答案 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部分。
答案 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。
的简写