jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

JavaScriptで出てくる二回連続の否定演算子!!

たまに他の人が書いたコードを見ているとはまることがあります。今回の二重否定も、ネット検索して調べるのに意外と時間がかかったのでメモとして残します。

否定演算子

変数の値の判定などで論理演算子をよく使いますが、否定演算子の!は、真偽の値をひっくり返す演算子です。!の後の内容がtrueならfalseを返し、falseならtrueを返します。

二重否定で!!を用いる

真偽値を逆転させるので、二回連続!!でしようすれば、当然、元に戻ります。最初trueだったものが一度falseに変わってtrueに戻ります。

二重否定の使用方法

例えば何かを検索して、該当項目があればその値を返し、該当項目がなければnullを返すような関数があるとします。そのようなときに、該当項目があるなしのみを真偽値として得たいが、該当項目の値自体はいらないことがあると思います。以下のように==で真偽判断をするのもやり方の一つです。

a = 10
b = null

a == null
//戻り値はfalse

b == null
//戻り値はtrue

否定演算子を利用するともっと簡略的なコードで同様の判定ができます。

a = 10
b = null

!!a
//戻り値はtrue

!!b
//戻り値はfalse

追記(2014/10/6)R言語でも使えます

!という記号はR言語でも否定を表します。つまり二回連続の否定も使えます。注意すべき点は、R言語のNULLは、論理演算に使用できないことです。R言語では0のときに二重否定の答えがFALSE、それ以外の数字のときにTRUEとなります。