技術コンテンツ

【JavaScript】論理演算子 - 論理値に対する演算(論理和・論理積・否定)

【JavaScript】論理演算子 - 論理値に対する演算(論理和・論理積・否定)

JavaScriptの論理演算について解説します。

検証環境

論理演算

論理演算は“論理値に対する演算”です。

2つの論理値から1つの論理値を算出する『論理和』・『論理積』や論理値を反転する『否定』などの演算の種類があります。

論理演算子

論理演算子は“論理演算の種類を表す記号”です。

種類 演算子 内容
論理和 || 2値の一方でも真の場合は真、それ以外は偽。 a || b
論理積 && 2値の両方が真の場合は真、それ以外は偽。 a && b
否定 ! 値が真の場合は偽、偽の場合は真。 !a

論理和

論理和は“2値の一方でも真の場合は真、それ以外は偽とする演算”です。

一般的には“または”を使って、“AまたはBが真の場合は真とする”と表現します。

論理和の演算パターンは次の4つです。

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

基本構文

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

サンプル

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

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

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

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

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

論理積

論理積は“2値の両方が真の場合は真、それ以外は偽とする演算”です。

一般的には“かつ”を使って、“AかつBが真の場合は真とする”と表現します。

論理積の演算パターンは次の4つです。

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

基本構文

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

サンプル

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

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

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

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

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

否定

否定は“値が真の場合は偽、偽の場合は真とする演算”です。

一般的に“Aが真なら偽とし、Aが偽なら真とする”と表現します。

否定の演算パターンは次の2つです。

A 否定
true false
false true

基本構文

!オペランド

サンプル

let bool1 = true;
let bool2 = false;

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

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

応用

論理演算子はオペランドが論理値であれば演算可能です。

そのため、比較演算子や複数の論理演算子を組み合わせて任意の演算を作成できます。

論理演算と比較演算

比較演算の結果を使った論理演算を行うことが可能です。

let x = 99;

___ih_hl_start
let result = x < 0 || 10 < x;
___ih_hl_end

console.log(result);
true

3行目のx < 0 || 10 < xは2つの比較演算と1つの論理演算により構成されます。

x < 0false10 < xtrueとなり、その2つの論理値の論理和を||演算子によって算出しています。

実行結果から分かるように、この式の全体的な評価はtrueになります。

複数の論理演算

論理演算の結果を使った論理演算を行うことが可能です。

let x = 99;
let y = 'Hello';

___ih_hl_start
let result = x < 0 || 10 < x && y == 'Hello';
___ih_hl_end

console.log(result);
true

4行目はx < 0 || 10 < xy == 'Hello'の演算結果の論理積を算出しています。

実行結果から分かるように、この式の全体的な評価はtrueになります。

また、数式と同様に丸括弧(())で演算の優先順位を制御することができます。

let x = 99;
let y = 'Hello';

___ih_diff_start
-let result = x < 0 || 10 < x && y == 'Hello';
+let result = ( x < 0 || 10 < x ) && y == 'Hello';
___ih_diff_end

console.log(result);
true