使用&运算符的JavaScript字符串eqaulity

0 javascript operators

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

bry*_*n60 6

这是将"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)

这样你就可以用干净可读的方式"将对象属性设置为响应属性或默认值".