javascript || 运算符根据顺序给出不同的结果

All*_*ash 0 javascript

我理解|| b返回一个对象,而不是布尔值.我只是想不通为什么javascript会给出不同的结果

undefined || "" (result is "")
"" || undefined (result is undefined)
Run Code Online (Sandbox Code Playgroud)

我认为两者都应该返回"".有人可以向我解释一下吗?谢谢!

更新:@Quentin清楚地回答,""被评估为false,如果a和b都被评估为false,则|| b将返回b.

Que*_*tin 5

||操作者测试表达式的左侧的感实性.如果LHS是真值,则返回LHS,否则返回RHS.

你可以看到这与if一个实际例子的结合:

if (a || b)
Run Code Online (Sandbox Code Playgroud)
  • 如果a是真的,那么它是一样的if (a)这是if (true).
  • 如果a是假的并且b是真的,则if (b)if (true)
  • 如果a并且b都是假的,那么它if (b)就是if (false)

如果您的示例,既不是""也不undefined是真值,那么您的两个测试都将返回RHS.