Задать вопрос
bro-dev
@bro-dev

Все объекты true почему это ложь ({}==true)?

если все объекты true, почему это ложь ?
spoiler
({}==true)
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Потому что при сравнении объектов и булевых значений последние преобразовываются в числа, а при сравнение объектов и чисел объекты также преобразуются в числа, т.е., в конечном счёте, в данном случае имеет место сравнение NaN и 1.

Подробнее о том, как выполняются сравнения, можете глянуть здесь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Если явно привести тип, то работает:
Boolean({}) == true
или !!{} == true
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Не происходит каст объекта к булевому типу.
если все объекты true, почему это ложь ?

Это можно исправить.
var t = {
	 valueOf: function () {
        return true
    }
}

console.log( t == true)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы