Есть ли в JavaScript понятие отрицательного нуля? - PullRequest
6 голосов
/ 24 июля 2011

Рассмотрим следующее

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
  • Почему отрицательный ноль равен нулю?
  • Учитывая, что он равен, почему он ведет себя по-разному?

Дополнительный вопрос:

  • Является ли комбинация 0 / -0 единственной комбинацией, в которой одинаковые объекты ведут себя по-разному?

Я знаю NaN / NaN - это комбинация, в которой неравные объекты ведут себя одинаково.

1 Ответ

7 голосов
/ 24 июля 2011

Почему отрицательный ноль равен нулю?

Потому что IEEE 754 требует этого .

Является ли комбинация 0 / -0 единственной комбинацией, в которой одинаковые объекты ведут себя по-разному?

Я верю в это. В Javascript только Numbers имеют специальный алгоритм ===, а 0, -0, NaN - единственные особые случаи (ECMA-262 §11.9.6).

...