什么是Javascript中的布尔评估规则?

时间:2012-10-17 09:09:14

标签: javascript boolean

  

可能重复:
  Why does (‘0’ ? ‘a’ : ‘b’) behave different than (‘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' && ''会返回''

我希望两个操作数都被评估为false,但似乎在上下文中'0'没有。为什么会这样?

1 个答案:

答案 0 :(得分:2)

''是假值,而'0'不是假值。

(尝试'0' == false时,==会进行类型转换,因此返回true。)