ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で `0 === -0` は True と評価されるのに、`Object.is(-0, 0)` は False を返すのはなぜですか?
0 と -0 の違いと同等
ECMAScript 5.1 仕様では 0 と -0 が区別されており、なぜ 0 なのかという疑問が生じています。 === -0 は true と評価されます。
IEEE 754 標準
JavaScript は、数値の表現に IEEE 754 標準を採用しています。 IEEE 754 によれば、符号付きゼロには正のゼロ (0) と負のゼロ (-0) が許可されます。 1/-0 = -∞ および 1/ 0 = ∞ であるため、この区別は浮動小数点演算に必要です。
厳密な等価比較アルゴリズム
技術的な問題にもかかわらず仕様のセクション 11.9.6 では、0 と 0 との厳密な等価比較アルゴリズムの動作を明示的に定義しています。 -0:
論理的かつ実践的な根拠
論理的には、 0 と -0 を等しいものとして扱います。これらを区別すると、特にゼロを扱う場合にコードが複雑になります。
Object.is 比較メソッド
ES2015 では、より正確な比較のために Object.is が導入されました。 Object.is は 0 と -0 を明示的に区別します:
Object.is(-0, +0); // false
以上がJavaScript で `0 === -0` は True と評価されるのに、`Object.is(-0, 0)` は False を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。