Apakah JavaScript memiliki konsep nol negatif
Pertimbangkan hal berikut
var l = console.log.bind(console);
l(-0); // 0
l(0); // 0
l(0 === -0); // true
l(0 == -0); // true
l(1 / 0); // Infinity
l(1 / -0); // -Infinity
- Mengapa nol negatif sama dengan nol?
- Mengingat itu sama, mengapa perilakunya berbeda?
Pertanyaan bonus:
- Apakah kombinasi
0/-0satu-satunya kombinasi di mana objek yang sama berperilaku berbeda?
Saya tahu NaN/NaN adalah kombinasi di mana objek yang tidak sama berperilaku sama.
Jawaban #1
Mengapa nol negatif sama dengan nol?
Karena IEEE 754 menuntutnya.
Apakah kombinasi
0/-0satu-satunya kombinasi di mana objek yang sama berperilaku berbeda?
Saya percaya begitu. Dalam Javascript, hanya Number yang memiliki algoritma === khusus, dan 0, -0, NaN adalah satu-satunya kasus khusus di sana (ECMA-262 §11.9.6).