Bertanya tentang Sifat 0: Adakah 0 dan -0 Sama?
Spesifikasi ECMAScript 5.1 telah mentakrifkan 0 dan -0 sebagai berbeza entiti. Ini menimbulkan persoalan: mengapa kemudian 0 === -0 kembali benar?
IEEE 754 Mendedahkan Kewujudan Sifar yang Ditandatangani
JavaScript menggunakan standard IEEE 754 untuk mewakili nombor. Piawaian ini memperkenalkan konsep "sifar yang ditandatangani," di mana kedua-dua -0 dan 0 diiktiraf. Ia merupakan variasi garis nombor nyata yang dilanjutkan, membenarkan kewujudan tafsiran yang berbeza bagi infiniti (1/−0 = −∞ dan 1/ 0 = ∞).
Perbezaan Teori, Persamaan Praktikal
Walaupun 0 dan -0 secara teorinya berbeza dalam Javascript perwakilan, Algoritma Perbandingan Kesaksamaan Ketat dalam bahagian 11.9.6 secara eksplisit mewajibkan bahawa 0 dan -0 dianggap sama untuk tujuan perbandingan. Keputusan ini dibuat untuk memudahkan pengekodan dan mengelakkan kerumitan yang tidak perlu.
A Note on Object.is
Dengan pengenalan ES2015, kaedah perbandingan baharu telah diperkenalkan: Object .ialah. Ia secara eksplisit membezakan antara -0 dan 0, seperti dalam Object.is(-0, 0); // palsu. Walau bagaimanapun, kaedah ini biasanya disyorkan hanya untuk kes tertentu di mana perbezaan antara sifar yang ditandatangani adalah penting.
Atas ialah kandungan terperinci Mengapakah JavaScript Melayan 0 dan -0 sebagai Sama Walaupun Perwakilan Mereka Yang Jelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!