JavaScript の論理演算子の書き方についておさらいしてみました。
MDNでは このページ に詳しく記述があります。
論理積( AND )
// a & b
const a = 0;
const b = 1;
console.log(a & b);
// 0が出力される
論理和( OR )
// a | b
const a = 0;
const b = 1;
console.log(a|b);
// 1が出力される
否定( NOT )
// !a
const a = 0;
console.log(!a);
// 0(false) の否定 = 「true」が表示される
console.log(Number(!a));
// 0(false) の否定である「true」を数値変換 = 「1」が表示される
排他的論理和( XOR )
// a^b
const a = 0;
const b = 1;
console.log(a^b);
// 1が表示される
const c = 1;
const d = 1;
console.log(c^d);
//0が表示される
否定論理積(NAND)
否定論理積は NOT AND
// !(a&b)
const a = 0;
const b = 1;
console.log( !(a&b) );
// trueが表示される
const c = 1;
const d = 1;
console.log( !(c&d) );
// NOT c AND NOT d = falseが表示される
console.log( Number(!(c&d)) );
// 0が表示される
否定論理和 (NOR)
否定論理和は NOT OR
// !(a|b)
const a = 0;
const b = 1;
console.log( !(a|b) );
// falseが表示される
const c = 0;
const d = 0;
console.log( !(c|d) );
// NOT c OR NOT d = true が表示される
console.log( Number(!(c|d)) );
// 1が表示される
否定排他的論理和 または 論理等価 (XNOR)
a === b の結果で良い?
// (a === b)
const a = 0;
const b = 1;
console.log( a === b );
// falseが表示される
const c = 0;
const d = 0;
console.log( c === d );
// true が表示される
console.log( Number(c === d) );
// 1が表示される