論理演算子

(式と演算子)

if文の条件判定によく使うものであり、真(true)または偽(false)を判定することができる。
例えば、条件Aと条件Bがあった場合、以下のような条件判定が可能である。

  • A && B は、「AとBが両方成立する必要がある」(AND演算=論理積)
  • A || B は、「AまたはBのどちらかが成立すればOK」(OR演算=論理和)
  • !A は、「A以外なら何でもOK」(NOT演算=否定)
  • A ^ Bは、「AまたはBのどちらかが成立している場合のみOK(両方成立はNG)」(XOR演算=排他的論理和)
  • !(A && B)は、「AとBが両方成立しなければOK」(NAND演算=否定論理積)
  • !(A || B)は、「AまたはBのどちらかが成立していなければOK」(NOR=否定論理和)
  • A === Bは、「AとBが両方等しければOK」(XNOR演算=否定排他的論理和 または 論理等価)
// 論理和(||)
if(1 || null)  { // 左辺または右辺がTrueの場合はTrue判定される
  console.log("条件に合致しました"); // 出力される(nullはfalseな値として判定される)
}

// 論理積(&&)
if(1 && null) { // 左辺と右辺がTrueの場合はTrue判定される
  console.log("条件に合致しました"); // 出力されない
}

// 論理否定(!)
if(!(1 && null)) { // Trueの場合False、Falseの場合はTrue判定される
  console.log("条件に合致しました"); // 出力される
}

// 排他的論理和(XOR)
const c = 1;
const d = 1;
console.log(c ^ d); // 0が表示される

// 否定論理積(NAND)
const c = 1;
const d = 1;
console.log( !(c & d) ); // falseが表示される

// 否定論理和(NOR)
const a = 0;
const b = 1;
console.log( !(a | b) ); // falseが表示される

// 否定排他的論理和 または 論理等価(XNOR)
const c = 0;
const d = 0;
console.log( c === d ); // true が表示される

また、以下のif文条件判定は等価である。

  • if( !(A || B) ) // ケース1 : 「 A または B 」でない
  • if( !A && !B ) // ケース2 : 「 A でない 」かつ「 B でない 」

論理積(&&)の挙動について

論理積(&&)は、左辺の値がFalseになったらその時点で値を返し、それ以降の判定は無視される。
『 10 < 0 && 10 < 20 』の場合、falseが返される。
『 “てすと” && “” 』の場合、左辺の値がTrueのため右辺の値が返される。False判定された値がそのまま返却される。
『 10 && null && 20 』の場合、左から順番に判定して、Falseになった時点でその値を返却し、それ以降の判定は無視される。なのでnullが返される。
『 10 && 15 && 20 』のように判定が全てTrueになった場合、一番右側の値(20)が返される。

inserted by FC2 system