const returnUrl =
(paymentType === 'order-pay-now' && 'orders/latest') ||
'my-account/overview'
Run Code Online (Sandbox Code Playgroud)
令我困惑的是 paymentType === 'order-pay-now' && 'orders/latest'
它会首先检查是否paymentType等于order-pay-now并且orders/latest总是返回true.所以写作paymentType === 'order-pay-now'达到了同样的目的?
我不知道&&在这里使用是否有意义.这可能是一个||应该使用的错误吗?
那么returnUrl要么是布尔值还是字符串值my-account/overview?
这是将"returnUrl"设置为"orders/latest"如果付款类型为"order-pay-now",则returnUrl设置为"my-account/overview"
它利用了条件运算符返回他们需要在JavaScript中评估的最终条件的值而不仅仅是真或假的事实.TBH,我不喜欢读这样的代码,并认为人们在写这种方式时会试图过于聪明.
会更清楚:
const returnUrl = (paymentType === 'order-pay-now') ? 'orders/latest' : 'my-account/overview';
Run Code Online (Sandbox Code Playgroud)
还有的用例以这种方式使用条件语句,虽然,例如,如果你从不确定值网络响应填充对象,并要设置的空值默认,一个好的方法就是做:
myObj.prop = response.prop || 'default value';
Run Code Online (Sandbox Code Playgroud)
这样你就可以用干净可读的方式"将对象属性设置为响应属性或默认值".