-4

次の違いは何ですか:

!!(obj1 && obj2);

 (obj1 && obj2);
4

2 に答える 2

1

1つ目は文字列またはオブジェクトを返す可能性があり、2つ目はブール値を返します。

オブジェクトはjavascriptで真である可能性があるため、真である場合A && Bの値を返しBます。これはオブジェクトである可能性があります。しかし、使用しています!! !Bがtrueまたはfalseに変換し、2番目の!がブール値に変換するため、ブール値にキャストします。正しいブール値に移動します

2つが異なる例:

var a = "test", b ="example"
var ex1 = ((a && b)   === true)  // false
var ex2 = (!!(a && b) === true)  // true
于 2013-02-06T03:58:53.257 に答える
0

なにもない。

一般に、整数にキャストする!!方法と同様に、関数呼び出しを使用せずにブール値にキャストするために使用され、文字列などにキャストするために使用できます。0^""+

ただし、この場合、ステートメント内にあると仮定すると、ブール値に暗黙的に「キャスト」して、それが真であるかどうかを確認するifため、まったく違いはありません。if

于 2013-02-06T03:58:41.033 に答える