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/-0 satu-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/-0 satu-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).