JavaScript 論理演算子

English version.

ブール値を操作するために使用します。

説明

&& AND

論理演算子&&は、左辺と右辺の両方がtrueの場合にtrueを返し、それ以外の場合にはfalseを返します。

例えば、以下のように使用できます。

let a = 5;
let b = 10;

if (a > 0 && b > 0) {
  console.log("Both a and b are positive.");
}

この例では、左辺と右辺の両方がtrueであるため、論理AND演算子の結果はtrueになります。したがって、コンソールに "Both a and b are positive." が出力されます。

また、論理AND演算子は、複数の条件を組み合わせるために使用できます。以下はその例です。

let age = 25;
let isStudent = true;

if (age >= 18 && age <= 30 && isStudent) {
  console.log("You are eligible for a student discount.");
}

この例では、ageが18以上30以下であり、かつisStudentがtrueである場合、論理AND演算子の結果はtrueになります。したがって、コンソールに "You are eligible for a student discount." が出力されます。

この演算子は、ショートサーキットの評価を持ちます。つまり、左辺がfalseの場合、右辺は評価されずに演算子の結果はfalseになります。

例えばブール値を戻り値とするファンクションを右辺にした場合、左辺がtrueの場合、右辺のファンクションが実行されます。

let a = 0;
let b = true;

if (b && f() ) {
  console.log("True");
}

console.log(a); // 1

function f(){
  a = a + 1;
  return true;
}

この例の場合、ファンションf()が実行されて変数aは1に更新されてから表示されます。

しかし左辺がfalseの場合、右辺が何であろうと結果がfalseと決まっているため右辺のファンクションは実行されません。

let a = 0;
let b = false;

if (b && f() ) {
  console.log("True");
}

console.log(a); // 0

function f(){
  a = a + 1;
  return true;
}

この例の場合、ファンションf()が実行されずに変数aは0のまま表示されます。

これは次のようにifをネストさせるのと同じことです。

let a = 0;
let b = true;

if ( b ) {
  if( f() ){
    console.log("True");
  }
}

console.log(a); // 1

function f(){
  a = a + 1;
  return true;
}

ifのネストはプログラムを読みにくくするため、それを避けるためにショートサーキットの挙動が利用されることがあります。しかし、これはこれで解読しにくくなるため、ifをネストさせるほうが意図を明確に表現できます。特に複数の人物がプログラムを見ることが想定されるときは、誤読や意図しない動作を招く場合があるため、基本的にはifをネストさせる方を推奨します。

|| OR

論理演算子||は、左辺と右辺のいずれかがtrueの場合にtrueを返し、両方がfalseの場合にfalseを返します。この演算子もまた、ショートサーキットの評価を持ちます。つまり、左辺がtrueの場合、右辺は評価されずに演算子の結果はtrueになります。

以下は、論理OR演算子を使用する例です。

let a = -5;
let b = 10;

if (a < 0 || b < 0) {
  console.log("At least one of a and b is negative.");
}

この例では、aまたはbのいずれかが負であるため、論理OR演算子の結果はtrueになります。したがって、コンソールに "At least one of a and b is negative." が出力されます。

また、論理OR演算子は、複数の条件を組み合わせるために使用できます。以下はその例です。

let age = 65;
let isStudent = false;

if (age >= 65 || isStudent) {
  console.log("You are eligible for a discount.");
}

この例では、ageが65以上であるか、isStudentがtrueである場合、論理OR演算子の結果はtrueになります。したがって、コンソールに "You are eligible for a discount." が出力されます。

! NOT

論理演算子!は、単項演算子で、オペランドがtrueである場合はfalseを、falseである場合はtrueを返します。これは、オペランドの論理的な否定を表します。

以下は、論理NOT演算子を使用する例です。

let isRaining = false;
if (!isRaining) {
  console.log("It's not raining.");
}

この例では、isRainingfalseであるため、論理NOT演算子の結果はtrueになります。したがって、コンソールに "It's not raining." が出力されます。

また、論理NOT演算子は、真偽値以外の値をブール値に変換するためにも使用できます。オペランドがnullundefined0NaN、空文字列('')の場合、論理NOT演算子の結果はtrueになります。それ以外の場合、論理NOT演算子の結果はfalseになります。

以下は、値をブール値に変換するために論理NOT演算子を使用する例です。

let num = 0;
if (!num) {
  console.log("The value of num is false.");
}

この例では、numの値は0であるため、論理NOT演算子の結果はtrueになります。したがって、コンソールに "The value of num is false." が出力されます。

---

関連記事

JavaScriptの記事一覧