Open1

JSの厳密等価性

AkatsukiAkatsuki

https://262.ecma-international.org/5.1/#sec-11.9.7 によると x === y

  1. xとyのが違う場合 => false
  2. xがundefined => true
  3. xがnull => true
  4. xがNumber
  • xがNaN => false
  • yがNaN => false
  • xとyが同じ数値 => true
  • xが+0, yが-0 => (符号bitが違うが)true
  • xが-0, yが+0 => 同様にtrue
  1. xがString => 長さと各オフセットの文字が等しい、つまり同じ文字列ならtrue
  2. xがBoolean => xとyが両方ともtrue か 両方ともfalseならtrue
  3. xとyが同じオブジェクトを指している => true

https://developer.mozilla.org/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness

数値以外のあらゆる値において、これは「値が自分自身と等しい」という明快な解釈を用います。

が明快な表現だなと改めて思いました