6

1つのシナリオがfalseと評価され、もう1つのシナリオがtrueと評価される理由がわかりません。

シナリオ1:

> '' == ''
true

シナリオ2:

> '' == ('' || undefined)
false

シナリオ2は、(空の文字列)が次の値と等しいかどうかを尋ねていませんか:(空の文字列)または未定義ですか?

私はここで基本的な何かを見逃していると確信しています。それは本当に私が理解しようとしていることです。私はこれを簡単にコーディングできますが、なぜそれが起こっているのかを知りたいのです...次回のために、あなたは知っていますか?

4

3 に答える 3

11
'' == ( '' || undefined )

と同じではありません

( '' == '' ) || ( '' == undefined )

それは次の行に沿っています。

var foo = '' || undefined; // Results in undefined

foo次に、空の文字列と比較します。

foo == ''; // undefined == '' will result in false

説明

論理||は短絡演算子です。左側の引数がtrueの場合、右側の引数は評価されません。JavaScript では、true''とは見なされません:

if ( '' ) console.log( 'Empty Strings are True?' );

undefined返され、空の文字列と比較されます。括弧内でこのロジックを実行する''と、 と は、undefined発生するのを待っている差し迫った等価チェックについて知りません。どちらがこの評価を生き残るかを知りたいだけです。

于 2012-05-21T19:26:52.413 に答える
2

それを壊しましょう:

'' == ('' || undefined) // return "undefined"
'' == undefined // false

||最初の真の値または最後の値を返します。

デモ

あなたはこれを求めている:

'' == undefined  || '' == false

undefinedのみ==nullあり、他のすべての「偽の」値ではありません。

  • 0
  • "" - 空の文字列
  • NaN
  • 間違い
于 2012-05-21T19:27:43.523 に答える
1

試す'' == '' || '' == undefined

ほとんどすべてのプログラミング言語と同様に、演算子の両側の式は有効なオペランドに評価される必要があります。||ブールオペランドのペアを評価するために使用される論理 OR 演算子です。

于 2012-05-21T19:27:23.273 に答える