Источник: Nuances of Programming Курс SkillFactory Frontend-разработчик. Получите перспективную творческую профессию в IT. JavaScript — хороший язык, но меня он часто озадачивает. Может, я недостаточно его знаю, но иногда просто не понимаю, как тут все устроено. Сможете правильно ответить на непростые вопросы ниже? 1. Почему и в false == [], и в false == ![] возвращается true? Как ни странно, это действительно так. Разберемся, применив знания о сравнениях на равенство и тождественности. console.log(false == []) // true
console.log(false == ![]) // true Для окончательного сравнения и логическое значение, и объект преобразуются в числа. Вот этапы сравнения: // 1. false преобразуется в число, чтобы получить 0
// 2. [] преобразуется в число, чтобы получить 0
// 3. При "0 == 0" возвращается true
console.log(false == []) // true
// 1. Результат выполнения "![]" - false
// 2. При false == false возвращается true
console.log(false == ![]) // true 2. Почему в [] == ![] возвращается true? Како