JavaScriptの「!!」(二重否定)演算子とは?意味と使い方をわかりやすく解説
JavaScriptの「!!」(二重否定)演算子とは?
JavaScriptにおける二重否定演算子(!!)は、論理否定演算子(!)を2回続けて適用する書き方で、任意の値の真偽(truthy / falsy)を判定し、その結果をBoolean型(true または false)として返します。
つまり、!!p は !(!p) と同じ意味です。「どんな値でも明示的にブール値へ変換したい」という場面でよく使われる、JavaScriptの定番イディオム(慣用句)のひとつです。
動作の仕組み
!!p を !(!p) として捉えると、次のように動作します。
p が falsy(偽とみなされる値)の場合: !p は true になり、!!p は false になる。 p が truthy(真とみなされる値)の場合: !p は false になり、!!p は true になる。
具体的なコード例
実際のコードで挙動を確認してみましょう。
0 === false // false(0 と false は厳密には等しくない)
!!0 === false // true(0 を Boolean に変換すると false)
!!0 === false
!!parseInt("foo") === false // parseInt("foo") は NaN なので falsy
!!1 === true
!!-1 === true
!!false === false
!!true === true
このように、!! を使うことで数値・文字列・null・undefined など、あらゆる値を対応するブール値へ一括して変換できます。
falsy とみなされる値の一覧
JavaScriptで false と評価される値(falsyな値)は以下の6種類だけです。
false0(-0や0nも含む)""(空文字列)nullundefinedNaN
これら以外の値(空でない文字列、配列、オブジェクトなど)は、すべて truthy として扱われます。
「!!」の実用的な使いどころ
!! は、値を確実に true / false に正規化したいときに便利です。例えば、以下のようなケースで活躍します。
- 条件分岐の結果をブール値として変数に保存したいとき
- 関数の戻り値として、必ず純粋なブール値を返したいとき
- 値の存在チェック(
nullやundefinedでないか)を簡潔に表現したいとき
例:const hasItems = !!items.length; のように書けば、配列に要素があるかどうかをブール値として一目で取得できます。
-
JavaScript DOMとは?基本の仕組みと要素の取得方法をわかりやすく解説
JavaScriptのDOM(Document Object Model:ドキュメントオブジェクトモデル)は、Webページ上のHTML要素を表現する仕組みです。DOMはインターフェースとして機能し、ページのコンテンツやスタイルを変更することで、Webページを自由に操作できるようにします。 DOMにアクセスするには、Webページ上で右クリックして「検証(Inspect)」を選択します。すると画面の右側または左側にパネルが表示され、現在閲覧しているページのHTML要素を確認できます。要素にマウスカーソルを合わせると、ページ上の該当部分がハイライトされるため、どの要素がページのどのセクションに対応
-
C/C++の「!」演算子に相当するPythonの機能とは?
Pythonで「!」演算子に相当するものは? C/C++において、! 記号は論理否定(NOT)演算子として定義されています。Pythonでは、これに相当するのが not 演算子です。 not 演算子は、オペランドが偽(False)であれば真(True)を返し、真(True)であれば偽(False)を返します。つまり、ブール値(真偽値)を反転させる働きを持っています。 基本的な使い方と実行例 >>> not(True) False >>> not(False) True >>> not(20>30) True >>>