JavaScript の値の等価性

このページは、JavaScript の値の等価性についてまとめる予定のページです。

目次

用語

falsy

if (x), x = x || 代替値 などで false として判定される値のこと (下記の値)。

  • false
  • 0, -0, 0n
  • 空文字列 ("")
  • null
  • undefined
  • NaN

nullish

null, undefined のこと。x = x ?? 代替値false として判定される値。

等価演算子 (==)

2つの値の型が異なる場合、型変換を行って2つの値が等価かを確認する演算子。

厳密等価演算子 (===)

型変換を行わずに2つの値が等価かを確認する演算子。

等価演算子の例

true になる例

console.log(null == undefined);
console.log('' == 0); // ToNumber('') === 0 -> 0 === 0
console.log('00000' == 0); // ToNumber('00000') === 0 -> 0 === 0
console.log('0e0' == 0); // ToNumber('0e0') === 0 -> 0 === 0
console.log([1,2,3] == '1,2,3'); // ToPrimitive([1,2,3]) == '1,2,3' -> '1,2,3' === '1,2,3'
console.log([] == ''); // ToPrimitive([]) == '' -> '' === ''

false になる例

console.log(2 == true); // 2 === ToNumber(true) -> 2 === 1

値が 0 か '0' のとき true にする

if (x === 0 || x === '0')
x == 0 にすると true になってしまう値の例
console.log('' == 0);
console.log('00000' == 0);
console.log('0e0' == 0);
console.log([] == 0);
console.log([0] == 0);
x == '0' にすると true になってしまう値の例
console.log([0] == '0');

値が空文字列のとき true にする

if (x === '')
x == '' にすると true になってしまう値の例
console.log(0 == '');
console.log([] == '');

値が null か undefined のとき true にする

「==」を使用する場合

if (x == null)

「===」を使用する場合

if (x === null || typeof x === 'undefined')
  • JavaScript では undefined という名前の変数に値を代入することができるため、その変数があるケースを避けるために typeof を使用します。
    (そのケースを無視してよければ x === null || x === undefined で可)
  • 参考: undefined - JavaScript | MDN

値が NaN のとき true にする

if (Number.isNaN(x))

関連