【JavaScript】論理式・論理演算 – 論理和、論理積、否定

【JavaScript】論理式・論理演算 – 論理和、論理積、否定

JavaScriptの論理式、論理演算をご紹介します。

論理式

論理式は真偽値(boolean型のtrue/false)を判定する式です。
例えば変数numがあるとき、『変数numは10と等しい』、『変数numは3より大きい』などを表わします。

式が正しければ真(true)、間違っていれば偽(false)と判定されます。

論理演算

論理演算は論理値の演算です。
2つの論理値を1つの論理値にまとめる論理和や論理積、論理値を反転させる否定などの演算があります。

論理和

論理和は2つの論理値の一方でも真の場合、演算結果を真とします。
一般的に『または』という用語で説明されることが多く、論理値のAとBがあるとき、『AまたはBが真の場合、真とする』と要約されます。

論理和は次のパターンがあります。

A B 論理和
true true true
true false true
false true true
false false false

論理積

論理積は2つの論理値の両方が真の場合、演算結果を真とします。
一般的に『かつ』という用語で説明されることが多く、論理値のAとBがあるとき、『Aが真かつBも真の場合、真とする』と要約されます。

論理積は次のパターンがあります。

A B 論理積
true true true
true false false
false true false
false false false

否定

否定は論理値を反転します。
一般的に論理値のAとBがあるとき、『Aが真なら偽とし、Aが偽なら真とする』と要約されます。

否定は次のパターンがあります。

A 否定
true false
false true

論理演算子

論理演算はプログラムでは論理演算子を使って表わします。
代表的な論理演算子は論理和、論理積、否定の3つです。

論理演算 演算子 意味
論理和 || 左右オペランドの一方が真の場合、真とする
論理積 && 左右オペランドの両方が真の場合、真とする
否定 ! オペランドが真の場合は偽、偽の場合は真とする

論理演算(論理和)

基本構文

左オペランド || 右オペランド

サンプル

let a_t = true;
let a_f = false;
let b_t = true;
let b_f = false;

// true / true
let result1 = a_t || b_t;
console.log(result1);

// true / false
let result2 = a_t || b_f;
console.log(result2);

// false / true
let result3 = a_f || b_t;
console.log(result3);

// false / false
let result4 = a_f || b_f;
console.log(result4);
true
true
true
false

論理演算(論理積)

基本構文

左オペランド && 右オペランド

サンプル

let a_t = true;
let a_f = false;
let b_t = true;
let b_f = false;

// true / true
let result1 = a_t && b_t;
console.log(result1);

// true / false
let result2 = a_t && b_f;
console.log(result2);

// false / true
let result3 = a_f && b_t;
console.log(result3);

// false / false
let result4 = a_f && b_f;
console.log(result4);
true
false
false
false

論理演算(否定)

基本構文

!オペランド

サンプル

let bool1 = true;
let bool2 = false;

let result1 = !bool1;
console.log(result1);

let result2 = !bool2;
console.log(result2);
false
true

論理式の結合

論理演算子を使い、複数の論理式を1つにまとめることができます。

比較演算子を含む場合

比較演算子を使った論理式を1つにまとめることができます。

サンプル

let num1 = 5;
let num2 = 8;
let num3 = 11;

let result = num1 < num2 && num3 > num2;

console.log(result);
true

5行目のnum1 < num2 && num3 > num2num1 < num2num3 > num2の真偽の論理積です。
いずれも真のため全体で真となります。

論理演算子のみ

複数の論理値を論理演算子で1つにまとめることができます。

サンプル

let bool1 = true;
let bool2 = false;
let bool3 = true;

let result = bool1 && bool2 || bool3;

console.log(result);
true

5行目のbool1 && bool2 || bool3は左から1つずつ判定処理されます。
最初にbool1 && bool2が偽と判定されます。
その結果を適用すると、偽 || bool3となり、真となります。