JavaScript では 0 と -0 は同じですか?
ECMAScript 5.1 仕様での区別にもかかわらず、0 と -0 は次のように評価されます。 JavaScript で厳密な等価性を使用すると true になります。
これはなぜですか?
JavaScript は数値表現に IEEE 754 標準を採用しています。この標準によれば、符号付きゼロは 0 (正のゼロ) と -0 (負のゼロ) の 2 つの形式で存在できます。ただし、0 または -0 で除算すると、未定義ではなく、それぞれ ∞ と -∞ になります。
技術的には、0 と -0 のこの区別は重要です。ただし、JavaScript には厳密な等価アルゴリズムの例外があります。セクション 11.9.6 では、厳密な等価比較では 0 と -0 が等しいものとして扱われることが明示的に述べられています。
この例外は、0 と -0 を同等のものとして扱うという論理概念と一致しています。さらに、コード内でこの区別を考慮する必要がなくなるため、開発が簡素化されます。
注:
ES2015 では、新しい比較方法として Object.is が導入されました。緩い等価演算子や厳密な等価演算子とは異なり、Object.is は 0 と -0 を明示的に区別します:
Object.is(-0, +0); // false
以上がJavaScript では 0 と -0 は等しいとみなされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。