我可以在三元运算符中使用多行吗

Sha*_*ndi 4 javascript conditional-operator conditional-statements

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

     if (open) {
         setOpen(false)
     } else {
         setOpen(true)
         navigator.clipboard.writeText(link)
     }
Run Code Online (Sandbox Code Playgroud)

“if”没有问题,我不知道如何将 else 转换为三元。就像下面的代码一样:

open ? setOpen(false) : setOpen(true) ; navigator.clipboard.writeText(link)
Run Code Online (Sandbox Code Playgroud)

像这样的事情还是有其他方法来完成这项工作?

Dav*_*vid 5

不。

您尝试使用三元条件运算符的原因是错误的。它不是任何块的直接替代品if

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

let x = someCondition ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ami*_*itk 5

是的。这是可能的(尽管不是最佳实践并且不推荐)

他们的方法是:

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

例如:

condition ? statement1 : ( statement2, statement3, statement4 )
Run Code Online (Sandbox Code Playgroud)

试试这个片段:

condition ? statement1 : ( statement2, statement3, statement4 )
Run Code Online (Sandbox Code Playgroud)