Adakah 0 dan -0 sama dalam JavaScript?
Walaupun terdapat perbezaan yang dibuat dalam spesifikasi ECMAScript 5.1, 0 dan -0 menilai kepada benar menggunakan kesaksamaan yang ketat dalam JavaScript.
Mengapa ini?
JavaScript menggunakan standard IEEE 754 untuk perwakilan berangka. Mengikut piawaian ini, sifar yang ditandatangani boleh wujud dalam dua bentuk: 0 (sifar positif) dan -0 (sifar negatif). Walau bagaimanapun, pembahagian dengan 0 atau -0 menghasilkan ∞ dan -∞, masing-masing, bukannya tidak ditentukan.
Secara teknikal, perbezaan antara 0 dan -0 ini adalah penting. Walau bagaimanapun, JavaScript memberikan pengecualian dalam algoritma kesamaan ketatnya. Bahagian 11.9.6 dengan jelas menyatakan bahawa 0 dan -0 dianggap sama dalam perbandingan kesamaan yang ketat.
Pengecualian ini sejajar dengan tanggapan logik untuk menganggap 0 dan -0 sebagai setara. Selain itu, ia memudahkan pembangunan dengan menghapuskan keperluan untuk mempertimbangkan perbezaan ini dalam kod.
Nota:
ES2015 memperkenalkan Object.is sebagai kaedah perbandingan baharu. Tidak seperti pengendali kesaksamaan yang longgar dan ketat, Object.is dengan jelas membezakan antara 0 dan -0:
Object.is(-0, +0); // false
Atas ialah kandungan terperinci Adakah 0 dan -0 Dianggap Sama dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!