【问题标题】:Can i use multiple line in ternary operator我可以在三元运算符中使用多行吗
【发布时间】:2023-02-16 23:28:41
【问题描述】:

我想在三元运算符中使用 if else 语句

     if (open) {
         setOpen(false)
     } else {
         setOpen(true)
         navigator.clipboard.writeText(link)
     }

“如果”没有问题我不知道如何将其他转换为三元。就像下面的代码:

open ? setOpen(false) : setOpen(true) ; navigator.clipboard.writeText(link)

像这样的事情还是有另一种方法来完成这项工作?

【问题讨论】:

  • 三元适用于单线。不要想太多。如果它不是单行代码,就写一个好的旧的 if-else。
  • 不要将多行塞进一行。你这样做的可能原因是什么?线路不花钱。您只是让清晰、明显的代码变得脆弱并容易出现错误。

标签: javascript conditional-statements conditional-operator


【解决方案1】:

不。

您出于错误的原因尝试使用三元条件运算符。这是不是任何if块的直接替换。

三元条件运算符是表达.它解析为一个值,可以在其他地方使用。例如:

let x = someCondition ? 1 : 0;

表达式解析为一个值,10,并且该值在赋值语句中使用。

您显示的代码是不是表达.你拥有的是一系列声明,根据某个值有条件地执行。 if 块是用于有条件地执行语句的结构。

您现在拥有的代码是正确的。

【讨论】:

    【解决方案2】:

    是的,可以在三元ifelse案例中编写多个语句:

    格式为:

    condition ? codeLine1 : ( codeLine2 , codeLine3 )

    这使您的陈述为:

    open ? setOpen(false) : (setOpen(true), navigator.clipboard.writeText(link));
    

    在每行之间用逗号分隔的括号中组合多个语句。

    也就是说,如果涉及多个语句,建议使用老式的 if-else 语句。

    如果有帮助,请选择答案,如果有任何问题,请告诉我。

    【讨论】:

    • 这不再起作用了,您可以试试这个语法 condition ? codeLine1 : ( codeLine2) && (codeLine3 )
    【解决方案3】:

    是的。这是可能的(虽然不是最佳实践,也不推荐)

    他们的方法是:

    1. 将所有内容放在括号内
    2. 用逗号 (",") 分隔每个语句

      例如:

      condition ? statement1 : ( statement2, statement3, statement4 )
      

      试试这个 SN-P:

      let a = 1;
      let b = 1;
      a == b ?
      (console.log("they"),console.log("are"), console.log("equal")) :
      (console.log("they're"), console.log("not equal"));

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 2011-01-13
      • 2020-05-09
      • 2016-05-15
      • 2015-04-27
      • 2021-08-24
      • 2020-09-17
      • 2019-01-06
      • 2016-10-27
      相关资源
      最近更新 更多