Сокращение Javascript if-else и возврат
Может ли сокращение javascript для if-else возвращаться из функции? Если да, то как это будет работать.
например. У меня есть это:
if(boolean){
return;
}
и я хотел бы написать это как это:
(value)? return;
Chrome жалуется, что возвращение неожиданно. Нужно ли писать что-то подобное, чтобы оно было действительно?
Ответы
Ответ 1
Нет, вы не можете этого сделать, если не вернете значение. Например, если ваша функция должна была вернуть значение, которое вы могли бы написать:
return boolean ? 'foo' : 'bar';
Но вы не можете остановить выполнение функции, вернув void с помощью условного оператора.
Ответ 2
Если вы намерены вернуться из функции в этот момент своего исполнения, независимо от того, оценивает ли тест true или false, вы можете использовать,
return (value) ? 1 : 2;
Но если вы просто хотите вернуться раньше, когда тест оценивает истину (например, как проверка работоспособности, чтобы предотвратить выполнение, когда параметры недействительны), самое короткое, что вы можете сделать:
if (boolean) return;
Ответ 3
if(boolean) return;
Однострочный, читаемый, совершенно действительный;
Ответ 4
Вы хотите сделать ternary operator
это:
(bool) ? ifTrue : ifFalse;
Обратите внимание: вы не можете опустить другую часть тернарного оператора.
http://en.wikipedia.org/wiki/Ternary_operation
Ответ 5
Условный "тернарный оператор" (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 false, то он возвращает p3.
(p1)? p2 : p3;
И точно так же, как такая функция, нет способа заставить родительскую функцию вернуться на основе условия. Поэтому это не значит, что если /else.
Ответ 6
Я знаю, что это старый вопрос, но я хочу добавить, что существует нестандартный способ возврата из функции в стенограмме 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));
Когда мы используем функции стрелок, мы можем получить доступ к переменным из контекста непосредственных функций.