Rumah > hujung hadapan web > tutorial js > Mengapakah ` 0 === -0` Menilai kepada Benar dalam JavaScript, Manakala `Object.is(-0, 0)` Mengembalikan Palsu?

Mengapakah ` 0 === -0` Menilai kepada Benar dalam JavaScript, Manakala `Object.is(-0, 0)` Mengembalikan Palsu?

Linda Hamilton
Lepaskan: 2024-11-22 07:04:11
asal
532 orang telah melayarinya

Why Does ` 0 === -0` Evaluate to True in JavaScript, While `Object.is(-0,  0)` Returns False?

Perbezaan dan Kesamaan 0 dan -0

Spesifikasi ECMAScript 5.1 membezakan antara 0 dan -0, menimbulkan persoalan mengapa 0 === -0 menilai kepada benar.

IEEE 754 Standard

JavaScript menggunakan standard IEEE 754 untuk mewakili nombor. Menurut IEEE 754, sifar yang ditandatangani membenarkan sifar positif ( 0) dan sifar negatif (-0). Pembezaan ini diperlukan untuk aritmetik titik terapung, kerana 1/-0 = -∞ dan 1/ 0 = ∞.

Algoritma Perbandingan Kesamaan Tegas

Walaupun teknikal perbezaan, seksyen 11.9.6 spesifikasi secara jelas mentakrifkan tingkah laku perbandingan kesaksamaan yang ketat algoritma untuk 0 dan -0:

  • Jika x ialah 0 dan y ialah -0, kembalikan benar.
  • Jika x ialah -0 dan y ialah 0, kembalikan benar.

Rasional Logik dan Praktikal

Secara logiknya, ia menjadikan wajar untuk menganggap 0 dan -0 sebagai sama. Membezakan antara mereka akan merumitkan kod, terutamanya apabila bekerja dengan sifar.

Kaedah Perbandingan Object.is

ES2015 memperkenalkan Object.is untuk perbandingan yang lebih tepat. Object.is secara eksplisit membezakan antara 0 dan -0:

Object.is(-0, +0); // false
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah ` 0 === -0` Menilai kepada Benar dalam JavaScript, Manakala `Object.is(-0, 0)` Mengembalikan Palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan