多表达式三元运算符?

时间:2018-07-18 19:10:03

标签: javascript

我正在尝试像这样在Javascript中对三元运算符进行多重表达:

condition ? 
exp1 ; ... ; expN 
:
alternative1 ; ... ; alternativeN

这是我的代码:

  validateEmail && validatePassword ?
        this.setState({validateForm: true})
        this.setState({nameSubmit:"onSubmit"})
        : null

我的控制台向我返回一个错误:

  

需要声明或声明

javascript文档讨论:

  

语法:

     

条件? expr1:expr2

但是也许有人实现了多表达式三元运算符?

谢谢

3 个答案:

答案 0 :(得分:2)

const exp = () => { exp1; ... ; expN }
const alt = () => { alternative1; ... ; alternativeN }

condition ? exp() : alt();

使用IIFE创建函数并在同一行中执行它不是很容易理解。

condition ? (() => { exp1; ... ; expN })() : (() => { alternative1; ... ; alternativeN })();

编辑:我想您刚刚添加了代码。在您的代码中,我建议您简单地将setState调用合并到一个命令中:

this.setState({
  validateForm: true, 
  nameSubmit:"onSubmit"
});

答案 1 :(得分:1)

您可以使用comma operator

  

逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。

let a = 0,
    b = 1,
    c = 2,
    d = a === 0 ? (b++, c++) : -1;
    
console.log(b, c, d); // prints 2 3 and 2(because this will be the last expression to be evaluated).

答案 2 :(得分:1)

要在一个分支中执行多个语句,请使用if语句:

if(validateEmail && validatePassword) {
   this.setState({validateForm: true});
   this.setState({nameSubmit:"onSubmit"});
}