const returnUrl =
(paymentType === 'order-pay-now' && 'orders/latest') ||
'my-account/overview'
让我感到困惑的是paymentType === 'order-pay-now' && 'orders/latest'
请先检查paymentType
是否等于order-pay-now
,并且orders/latest
将始终返回true。那么写paymentType === 'order-pay-now'
可以达到同样的目的吗?
我不知道在这里使用&&
有何意义。这可能是应该使用||
的错误吗?
所以returnUrl
将是布尔值或字符串值my-account/overview
??
答案 0 :(得分:6)
如果付款类型为“ order-pay-now”,则将“ returnUrl”设置为“ orders / latest”,否则将returnUrl设置为“ my-account / overview”
利用了这样一个事实:条件运算符返回需要在JavaScript中评估的最终条件的值,而不仅仅是真或假。 TBH,我不喜欢阅读这样的代码,并且认为人们在以这种方式编写时会变得太聪明了。
更清楚的是:
const returnUrl = (paymentType === 'order-pay-now') ? 'orders/latest' : 'my-account/overview';
但是,有一些用例以这种方式使用条件,例如,如果您要从Web响应中填充不确定的值的对象,并且想将默认值设置为空值,那么一个好方法是:>
myObj.prop = response.prop || 'default value';
这样,您以一种清晰易读的方式说“将对象属性设置为响应属性或默认值”。
答案 1 :(得分:2)
这就像三元运算符:
var paymentType = `order-pay-now`;
const returnURL = paymentType==='order-pay-now' ? 'orders/latest' : 'my-account/overview'
console.log(returnURL);
const second = ( paymentType==='order-pay-now' && 'orders/latest') || 'my-account/overview'
console.log(second);