具有多个结果的三元语句

我有一个函数,我在其中传递一个query字符串参数。如果查询不为空,则该函数toggleList使用 true 布尔值调用,否则使用 false。


我还有一个setMovies接受数组的函数。如果查询不为空,我想执行此功能。


query ? toggleList(true) : toggleList(false);


if (query) { 

  setMovies([...movies]);

}

但我不能做这样的事情:


query ? (toggleList(true), setMovies([...movies])) : toggleList(false);

是不是不可能在三元语句的真值部分调用 2 个函数,因为这样我实现了太多的逻辑,我应该只使用普通的 if/else 语句,或者我是否遗漏了什么使得这个可能的


BIG阳
浏览 138回答 4
4回答

慕丝7291255

只需采取干净的方法。toggleList(!!query);               // if query is already boolean take it without !! if (query) setMovies([...movies]);

慕容3067478

如果调用的第一个函数有一个错误的返回值 ex undefined 你可以使用 || 操作员触发它们query ? toggleList(true) || setMovies([...movies]) : toggleList(false);如果它是真实的,你会相应地使用 &&query ? toggleList(true) && setMovies([...movies]) : toggleList(false);例子:function f1(){  console.log("f1");}function f2(){  console.log("f2");}function f3(){  console.log("f3");}true ? f1() || f2() : f3(); // logs both f1 and f2false ? f1() || f2() : f3(); // logs f3

哔哔one

三元运算符用于简单的一行 if/else 情况。如果您想像您的情况一样实现更复杂的逻辑,请使用标准 if/else。

HUX布斯

您可以使用匿名函数调用const func1 = a => console.log('1', a)const func2 = b => console.log('2', b)true  ? (() => {      func1('a')      func2('b')    })()  : func2('c')或者const func1 = a => console.log('1', a)const func2 = b => console.log('2', b)true ? (func1(1), func2(2)) : func2(2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript