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