JavaScript 論理演算子
ブール値を操作するために使用します。
説明
&& 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.");
}
この例では、isRainingがfalseであるため、論理NOT演算子の結果はtrueになります。したがって、コンソールに "It's not raining." が出力されます。
また、論理NOT演算子は、真偽値以外の値をブール値に変換するためにも使用できます。オペランドがnull、undefined、0、NaN、空文字列('')の場合、論理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." が出力されます。
---