ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で `0 === -0` は True と評価されるのに、`Object.is(-0, 0)` は False を返すのはなぜですか?

JavaScript で `0 === -0` は True と評価されるのに、`Object.is(-0, 0)` は False を返すのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-22 07:04:11517ブラウズ

Why Does ` 0 === -0` Evaluate to True in JavaScript, While `Object.is(-0,  0)` Returns 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:

  • x が 0 で y が -0 の場合、true を返します。
  • x が -0 で y が 0 の場合、true を返します。

論理的かつ実践的な根拠

論理的には、 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。