Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对三元运算的结果执行多个函数?_Javascript_Ternary Operator - Fatal编程技术网

Javascript 如何对三元运算的结果执行多个函数?

Javascript 如何对三元运算的结果执行多个函数?,javascript,ternary-operator,Javascript,Ternary Operator,我有一个if/else语句,如果它的计算结果为true,则会调用两个函数 if (isTrue) { functionOne(); functionTwo(); } else { functionThree(); } 我想用这样的三元语句来表达: isTrue ? (functionOne(), functionTwo()) : functionThree(); 这是可能的吗?您总是可以将任何内容包装到匿名函数中,并立即调用它,即所谓的 isTrue ? (func

我有一个if/else语句,如果它的计算结果为true,则会调用两个函数

if (isTrue) {
    functionOne();
    functionTwo();
} 
else {
    functionThree();
}
我想用这样的三元语句来表达:

isTrue ? (functionOne(), functionTwo()) : functionThree();

这是可能的吗?

您总是可以将任何内容包装到匿名函数中,并立即调用它,即所谓的

isTrue ? (function() { functionOne(); functionTwo() })() : functionThree();

但正如您所看到的,它看起来非常糟糕,并且是对三元运算符的一种非常严重的误用(它不会返回任何有用的内容),因此我建议您不要这样做。

您的示例确实是有效的javascript,并将其封装在一个语句中,并用括号表示三元数

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):


你为什么要把事情复杂化?想想你的同事将来遇到这种情况时会有什么感受。特别是如果他们知道你住在哪里……是的,你可以这么做()但是为什么呢?三元运算符返回一个值。您似乎使用了一行“if”语句,它不返回任何值。这不是预期用途。只需将您的语句用括号*()*括起来,并用逗号*分隔,*请注意,当这些函数实际返回某些内容时(假设您使用两个函数,并且希望它们都在ReactJS中呈现某些内容),应谨慎使用(或根本不使用)因为逗号运算符只返回右侧函数的值。
isTrue ? (functionOne(), functionTwo()) : functionThree();