JavaScript - 論理値

論理値

論理値とは 0 か 1 かを表す値です。プログラムでは、どの条件も最終的には 0 か 1 かのどちらかに評価されます。プログラム上では 0 を false、1 を true の予約語として定義されています。

以下の例では、数値の比較により論理値を返しています。正しければ true、誤っていれば false を返します。

var num = 10;
num == 10; // true
num == 12; // false
論理値

以下の例では、比較演算子による条件判定を行っていますが、Infinityundefined などを含むすべての値は truefalse に変換できます。

var num = 10;

if(num == 10){
  document.write("num の値は 10 です。");
}
else{
  document.write("num の値は 10 ではありません。");
}
論理値による条件判定

以下の値は、すべて false に変換されるため、false と同じ動作をします。逆に以下の値以外は、すべてのオブジェクト (配列) も含めて true に変換され、true と同じ動作をします。

  • undefined
  • null
  • 0
  • -0
  • NaN
  • "" (空文字)

例えば、変数 obj にはオブジェクトか null 値が格納されているかは if 文を使って明示的にテストできます。非同値演算子 (!==) は、変数 objnull 値を比較して true または false のどちらかに評価します。

if(obj !== null) ...

nullfalse に変換され、オブジェクトは true に変換される規則を使えば、以下のように評価式を省略できます。

if(obj) ...

ただし、上記の 2 つの評価式は厳密には同じではありません。前者の評価式では、厳密に null 値であるかを評価していますが、後者の評価式では null 値を含め undefined や 空文字の場合など、false に変換される値の場合はすべて if 文を実行しません。どちらの if 文が適切かは、変数 obj に代入される値によります。null 値であるかどうかを 0"" であるかどうかを区別する場合は、明示的に比較を行って下さい。

論理 AND, OR, NOT 演算

&& 演算子は、論理 AND 演算を行います。両方のオペランド (被演算子) が true に変換される値の場合にのみ、true と評価します。それ以外は false と評価します。右辺のオペランド A と 左辺のオペランド B の論理 AND 演算は以下の通りです。

右辺 A   左辺 B   結果
---------------------
true    true    true
true    false   false
false   true    false
false   false   false
論理 AND 演算

|| 演算子は、論理 OR 演算を行います。どちらかのオペランドが true に変換される値であれば、true と評価します。両方のオペランドが false に変換される値であれば、false と評価します。右辺のオペランド A と 左辺のオペランド B の論理 OR 演算は以下の通りです。

右辺 A   左辺 B   結果
---------------------
true    true    true
true    false   true
false   true    true
false   false   false
論理 OR 演算

3 つ目の演算子は、単項 ! 演算子です。! 演算子は論理 NOT 演算を行います。オペランドが false に変換される値であれば、true と評価します。逆に、オペランドが true に変換される値であれば、false と評価します。

if ((x == 0 && y == 0) || !(z == 0)) {
// x と y の両者が 0、または z が 0 以外の場合。
}
論理値による条件判定

関連記事

JavaScript のまとめページはプログラミング JavaScript 入門を参照してください。

Category:
プログラミング
公開日:
更新日:
Pageviews:
32
Shares:
2
Tag:
JavaScript
hatebu icon
hatebu