可能重复:
为什么 ('0' ? 'a' : 'b') 的行为不同于 ('0' == true ? 'a' : 'b')
我目前正在学习 Javascript,到目前为止,我对该语言感到满意。
今天早上,在编写测试时,我意识到了一些我无法解释的事情:
在评估布尔表达式时,我们有:
// a && b returns b in case a && b are evaluated to true: OK
'2' && '3' => '3'
'3' && '2' => '2'
// a && b returns a in case a is evaluated to false, b otherwise: OK
false && '' => false
'' && false => ''
// '' and '0' are evaluated to false in a boolean context: OK
'' == false => true
'0' == false => true
// Here is the "problem":
'' && '0' => '' // To be expected: both operands evaluate to false
'0' && '' => '' // What ?!!
所以我的问题很简单:为什么'0' && ''
return ''
?
我希望两个操作数都评估为 false,但在这种情况下'0'
似乎没有。为什么会这样?