JavaScript 二重否定(!!)とは

IT

JavaScriptを読んでいて以下のようなコードがあり
知らなかったので、調べました。

if(!!hoge)

二重否定(!!)とはなにか

検索すると下記ページがヒットします。

論理否定 (!) - JavaScript | MDN
論理否定 (!) 演算子 (論理反転、否定) は、真値を取ると偽値になり、その逆も同様です。これは通常論理型 (ブール型) の値に使用されます。論理型以外の値に使用した場合、単一のオペランドが true に変換できる場合は false を返...

複数の否定演算子を連続して使用することで、明示的にあらゆる値を対応する論理型プリミティブに変換することができます。変換は値の「真値性」または「偽値性」に基づいて行われます (truthy および falsy を参照)。

まとめると、true or falseの論理型に型を変換してくれるものです。
"!"一つだと否定として扱われるのですが、以下の例のとおり、否定ではなくそのまま評価されることに注意したいところですね。

n1 = !!true; // !!truthy は true を返す
n2 = !!{}; // !!truthy は true: *あらゆる*オブジェクトは真値になります...
n3 = !!new Boolean(false); // ... .valueOF() が false の Boolean オブジェクトであっても
n4 = !!false; // !!falsy は false を返す
n5 = !!""; // !!falsy は false を返す
n6 = !!Boolean(false); // !!falsy は false を返す

コメント

タイトルとURLをコピーしました