如何对三元运算的结果执行多个函数?
How to I execute multiple functions on the result of a ternary operation?
我有一个 if/else 语句,如果它的计算结果为真,就会调用两个函数。
if (isTrue) {
functionOne();
functionTwo();
}
else {
functionThree();
}
我希望能够将其放入这样的三元语句中:
isTrue ? (functionOne(), functionTwo()) : functionThree();
这可能吗?
你总是可以将任何东西包装到一个匿名函数中并立即调用它,所谓的 Immediately Invoked Function Expression (IIFE),就像这样
isTrue ? (function() { functionOne(); functionTwo() })() : functionThree();
但如您所见,它看起来非常糟糕,并且是对三元运算符的严重滥用(它 return 没有任何用处)所以我真的建议不要这样做。
你的例子确实有效javascript。 You can use a comma to separate expressions,并将其包装在一个语句中,并用括号表示三元。
var functionOne = function() { console.log(1); }
var functionTwo = function() { console.log(2); }
var functionThree = function() { console.log(3); }
var isTrue = true;
isTrue ? (functionOne(), functionTwo()) : functionThree();
// 1
// 2
isTrue = false;
isTrue ? (functionOne(), functionTwo()) : functionThree();
// 3
但是,这是不可取的。带有 if
语句的版本更加清晰易读,执行速度也一样快。在我见过或使用过的大多数代码库中,逗号运算符 从未 以这种方式使用,因为它比有用的多得多。
仅仅因为你可以,并不意味着你应该。
出于某种原因,对我有用的是将两个函数作为对象返回到数组中。否则三元运算符只返回最后一个函数。请参阅以下示例:
isTrue ? [fucnctionOne(), functionTwo()] : functionThree()
当然,您可以将语句放在 括号*()* 中,然后用 逗号*,*
condition ? (doThis, andThis) : (doThat, andThat)
你的情况(OP):
isTrue ? (functionOne(), functionTwo()) : functionThree();
我有一个 if/else 语句,如果它的计算结果为真,就会调用两个函数。
if (isTrue) {
functionOne();
functionTwo();
}
else {
functionThree();
}
我希望能够将其放入这样的三元语句中:
isTrue ? (functionOne(), functionTwo()) : functionThree();
这可能吗?
你总是可以将任何东西包装到一个匿名函数中并立即调用它,所谓的 Immediately Invoked Function Expression (IIFE),就像这样
isTrue ? (function() { functionOne(); functionTwo() })() : functionThree();
但如您所见,它看起来非常糟糕,并且是对三元运算符的严重滥用(它 return 没有任何用处)所以我真的建议不要这样做。
你的例子确实有效javascript。 You can use a comma to separate expressions,并将其包装在一个语句中,并用括号表示三元。
var functionOne = function() { console.log(1); }
var functionTwo = function() { console.log(2); }
var functionThree = function() { console.log(3); }
var isTrue = true;
isTrue ? (functionOne(), functionTwo()) : functionThree();
// 1
// 2
isTrue = false;
isTrue ? (functionOne(), functionTwo()) : functionThree();
// 3
但是,这是不可取的。带有 if
语句的版本更加清晰易读,执行速度也一样快。在我见过或使用过的大多数代码库中,逗号运算符 从未 以这种方式使用,因为它比有用的多得多。
仅仅因为你可以,并不意味着你应该。
出于某种原因,对我有用的是将两个函数作为对象返回到数组中。否则三元运算符只返回最后一个函数。请参阅以下示例:
isTrue ? [fucnctionOne(), functionTwo()] : functionThree()
当然,您可以将语句放在 括号*()* 中,然后用 逗号*,*
condition ? (doThis, andThis) : (doThat, andThat)
你的情况(OP):
isTrue ? (functionOne(), functionTwo()) : functionThree();