Подтвердить что ты не робот

Почему (null == false) и (null == true) оба возвращают false?

Я знаю, что null - объект без атрибутов или функций.

Однако я смущен тем, что console.log(null == false); и console.log(null == true); возвращают false.

Каковы правила преобразования между null и boolean?

4b9b3361

Ответ 1

Это потому, что Абстрактный алгоритм сравнения равенства требует, чтобы Type(x) или Type(y) является булевым в выражении x == y, тогда логическое значение должно быть принудительно привязано к числу через ToNumber, который преобразует true в 1 и false в +0.

Это означает, что любое сравнение true == something или something == true приводит к 1 == something или something == 1 (заменяя true и 1 на false и +0 для false).

Тип Null не сравнивается ни с 1, ни с +0 (фактически, нуль сравним только с undefined в AECA).

Существует подробное обсуждение всех различных видов равенства в JavaScript на MDN, на которые стоит обратить внимание, если вы хотите узнать больше.

Однако, если вы принуждаете null к числу, которое принуждено к +0, поэтому +null == false фактически возвращает true.к югу >

Ответ 2

Ответ: Нет никакого относительного аспекта между нулевым и логическим.

MDN Источник: -

Значение null является литералом (не является свойством глобального объекта, такого как undefined может быть). В API, нуль часто извлекается на месте, где объект можно ожидать, но объект не подходит. При проверке null или undefined остерегайтесь различий между равенствами (==) и identity (===) (преобразование типа выполняется с помощью бывший).

// foo does not exist, it is not defined and has never been initialized:
> foo
"ReferenceError: foo is not defined"

// foo is known to exist now but it has no type or value:
> var foo = null; foo
"null"

Разница между нулем и undefined

typeof null        // object (bug in ECMAScript, should be null)
typeof undefined   // undefined
null === undefined // false
null  == undefined // true

Javascirpt | MDN

Ответ 3

Добавление к текущему обсуждению. null >= false возвращает true.

Я считаю, что это потому, что это интерпретируется как! (null < false)

Ответ 4

Значение null является литералом JavaScript, представляющим "пустое" значение или "undefined". null является одним из примитивных значений JavaScript. Он не равен логическому истинному и не равен логическому false, потому что это значение undefined. Значение null больше склоняется к false, даже если оно не является "ложным". Вот почему его называемые "фальшивые" операторы и блок if (var) {} не выполняется, когда var имеет значение null.