5

明示的な変換を示す以外に、JavaScript で double not 演算子を使用する利点はありますか? 最近では、double not を使用して新しい API の存在をチェックするのが好きなようですが、私はその利点を読んだことがありません。

if(!!window.File)
    // The File API is supported.
else
    // Your browser sucks.

私が読んだことの1つは、ブール値への型キャストの簡潔であいまいな方法であるということですが、このコンテキストで使用すると、オブジェクトが定義されているかどうかを確認しているため、オブジェクトはとにかくブール値に自動強制されます。

要するに、なぜ人々はエンジンの上に 2 つのブール演算を行うのでしょうか?

4

2 に答える 2

7

あなたが提示したような文脈でそれを行う理由は本当にわかりません。結果には一切影響しません。

私がこれを良い考えだと思うのは、ブール値を返すはずの関数を構築していて、それを他の値からキャストする必要がある場合だけです.

function isNotFalsy(val) { return !!val; }

この例は少し強引かもしれませんが、アイデアは理解できます。戻り値がユーザーが期待する型であることを常に確認する必要があります。

于 2012-06-10T20:17:26.227 に答える
1

!!式の中で使用する必要はありませんif
値をブール値に変換するために使用されておりif、デフォルトでそれを行います。

var x = ""; // a falsy value
!x // true
!!x // false

if (x) === if (!!x)
于 2012-06-10T20:15:27.327 に答える