次の違いは何ですか:
!!(obj1 && obj2);
と
(obj1 && obj2);
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
なにもない。
一般に、整数にキャストする!!
方法と同様に、関数呼び出しを使用せずにブール値にキャストするために使用され、文字列などにキャストするために使用できます。0^
""+
ただし、この場合、ステートメント内にあると仮定すると、ブール値に暗黙的に「キャスト」して、それが真であるかどうかを確認するif
ため、まったく違いはありません。if