我正在尝试像这样在Javascript中对三元运算符进行多重表达:
condition ?
exp1 ; ... ; expN
:
alternative1 ; ... ; alternativeN
这是我的代码:
validateEmail && validatePassword ?
this.setState({validateForm: true})
this.setState({nameSubmit:"onSubmit"})
: null
我的控制台向我返回一个错误:
需要声明或声明
javascript文档讨论:
语法:
条件? expr1:expr2
但是也许有人实现了多表达式三元运算符?
谢谢
答案 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"});
}