Rumah >hujung hadapan web >tutorial js >Mengapakah ` 0 === -0` Menilai kepada Benar dalam JavaScript, Manakala `Object.is(-0, 0)` Mengembalikan Palsu?
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:
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
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!