为了账号安全,请及时绑定邮箱和手机立即绑定

具有多个结果的三元语句

具有多个结果的三元语句

BIG阳 2022-12-09 15:37:07
我有一个函数,我在其中传递一个query字符串参数。如果查询不为空,则该函数toggleList使用 true 布尔值调用,否则使用 false。我还有一个setMovies接受数组的函数。如果查询不为空,我想执行此功能。query ? toggleList(true) : toggleList(false);if (query) {   setMovies([...movies]);}但我不能做这样的事情:query ? (toggleList(true), setMovies([...movies])) : toggleList(false);是不是不可能在三元语句的真值部分调用 2 个函数,因为这样我实现了太多的逻辑,我应该只使用普通的 if/else 语句,或者我是否遗漏了什么使得这个可能的
查看完整描述

4 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

只需采取干净的方法。

toggleList(!!query);               // if query is already boolean take it without !!
if (query) setMovies([...movies]);


查看完整回答
反对 回复 2022-12-09
?
慕容3067478

TA贡献1773条经验 获得超3个赞

如果调用的第一个函数有一个错误的返回值 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 f2

false ? f1() || f2() : f3(); // logs f3


查看完整回答
反对 回复 2022-12-09
?
哔哔one

TA贡献1854条经验 获得超8个赞

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



查看完整回答
反对 回复 2022-12-09
?
HUX布斯

TA贡献1876条经验 获得超6个赞

您可以使用匿名函数调用


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)


查看完整回答
反对 回复 2022-12-09
  • 4 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信