重複の可能性:(
'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' && ''
戻るの''
ですか?
両方のオペランドがfalseと評価されることを期待しますが、そのコンテキストではそうで'0'
はないようです。なぜそうなのですか?