Perbezaan antara 0 dan -0 dalam ECMAScript 5.1
Spesifikasi ECMAScript 5.1 secara jelas membezakan antara 0 dan -0, walaupun mereka menilai kepada nilai yang sama jika dibandingkan. Perbezaan ini berpunca daripada pelaksanaan nombor titik terapung dalam JavaScript menggunakan piawaian IEEE 754.
Piawaian IEEE 754 memerlukan kedua-dua 0 dan -0 atas sebab teknikal yang berkaitan dengan operasi berangka dan pembahagian dengan sifar. Walau bagaimanapun, walaupun terdapat perbezaan teknikal ini, perbandingan kesamaan yang ketat dalam JavaScript menganggap 0 dan -0 sebagai sama.
Menurut Algoritma Perbandingan Kesamaan Ketat yang ditakrifkan dalam spesifikasi ECMAScript 5.1, jika kedua-dua operan ialah nombor, perbandingan akan kembalikan benar walaupun satu ialah 0 dan satu lagi ialah -0. Kes khas ini ditakrifkan secara eksplisit dalam algoritma:
- If x is +0 and y is −0, return true. - If x is −0 and y is +0, return true.
Ini membenarkan sebab praktikal, kerana membezakan antara 0 dan -0 berkemungkinan memerlukan pengendalian khas dalam kod JavaScript. Untuk membezakan secara eksplisit antara mereka, kaedah perbandingan Object.is yang diperkenalkan dalam ES2015 boleh digunakan, kerana ia mengembalikan palsu apabila membandingkan 0 hingga -0.
Atas ialah kandungan terperinci Bagaimanakah 0 dan -0 Berbeza dalam JavaScript, Walaupun Kesaksamaan Tegas Melayan Mereka sebagai Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!