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
465 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!

sumber:php.cn
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