Я еще не нашел ни одного обсуждения или статьи о ложных значениях в Javascript, где минус ноль упоминается, пока я вижу !!-0 приводящий к false . Это почему?

Обновление: теперь я думаю, что большинство авторов, суммирующих ложные значения, либо не знают о значении -0 как о значении, либо имеют значение 0 как 0 и -0 .

Проще говоря, спецификация ECMAScript утверждает, что логическое преобразование -0 приводит к false . Это указано в таблице преобразований для абстрактной операции ToBoolean , раздел 7.1.2.

Если аргумент равен 0 , -0 или NaN , вернуть false ; в противном случае верните истину .

И вот почему: здесь сначала вычисляется -0. Он не будет рассчитывать только отрицательный знак, поэтому он включает в себя цифру. Затем выводит 0 затем запускается через ! оператор два раза. Первое ! оператор преобразует или анализирует 0 в логическое значение, а затем инвертирует или фальсифицирует логическое значение. !0 возвращает true Второй инвертирует снова, возвращая false

Это очень хороший вопрос. Javascript отличает -0,0 от 0,0. (И IEEE754 тоже.) Мы можем проверить это с:

 var X = -0.0; X -{amp}gt; "-0" 

Так что это значение отличается от 0.0.

 `!-0.0` -{amp}gt; true 

Таким образом, вы правы, списки ложных значений должны также явно указывать -0.0.

Вероятно, они не перечисляют это, потому что:

 0.0 === -0.0 -{amp}gt; true 

Однако это не очень хорошая причина, если учесть, что javascript несовместим в некоторых отношениях (например, нетранзитивен).