Open1
JSの厳密等価性
https://262.ecma-international.org/5.1/#sec-11.9.7 によると x === y
は
- xとyの型が違う場合 => false
- xがundefined => true
- xがnull => true
- xがNumber
- xがNaN => false
- yがNaN => false
- xとyが同じ数値 => true
- xが+0, yが-0 => (符号bitが違うが)true
- xが-0, yが+0 => 同様にtrue
- xがString => 長さと各オフセットの文字が等しい、つまり同じ文字列ならtrue
- xがBoolean => xとyが両方ともtrue か 両方ともfalseならtrue
- xとyが同じオブジェクトを指している => true
https://developer.mozilla.org/ja/docs/Web/JavaScript/Equality_comparisons_and_sameness の
数値以外のあらゆる値において、これは「値が自分自身と等しい」という明快な解釈を用います。
が明快な表現だなと改めて思いました