0

Почему это сравнение [0] == false вернет правду?

  • Потому что не надо использовать нестрогое сравнение xD [0] == 0 истина, а 0 == false, поэтому [0] == false - истина. – Vladimir Gonchar Apr 19 '22 at 14:30
  • 1
    Почитайте про неявное преобразование типов в JS (вот здесь, например: https://habr.com/ru/company/ruvds/blog/347866/) – Vladimir Gonchar Apr 19 '22 at 14:32
  • @VladimirGonchar, не всегда из A == B и B==C следует, что A==C :) – Grundy Apr 19 '22 at 14:38

1 Answers1

0

Очень забавно, то что меня заминусовали, и написали банальные вещи, а мне хотелось понять как это работает под капотом

Если кратко, то в этом кейсе обо значения приводятся к числу и становятся 0 -ми

Более подробно можно прочитать здесь

  • Я писал развёрнутый ответ, но не успел вопрос закрыли.... – EzioMercer Apr 19 '22 at 14:34
  • 1
    Хороший вопрос) И так начнём по порядку. Для начала надо понять что [0] == false - не то же самое что и Boolean([0]) == false или !![0] == false. В первом случае вызывается метод array.toString(), что возаращает нам '0'. Во втором случае у нас получится true == false, что вернёт нам false, т.к. все объекты и массивы - это true. – EzioMercer Apr 19 '22 at 14:36
  • 1
    Извините, я успел найти ответ) – user447630 Apr 19 '22 at 14:36
  • Там единтсвенное остаётся понять, почему '0' == false. А это потому что при сравнении '0' приводится к числу и получается сравнение 0 == false, а это true – EzioMercer Apr 19 '22 at 14:37
  • @EzioMercer, false тоже к числу приводится. – Grundy Apr 19 '22 at 14:44
  • хотелось понять как это работает под капотом - в дубликате описан алгоритм сравнения. – Grundy Apr 19 '22 at 14:46
  • ссылку лучше давать на источник: https://stackoverflow.com/questions/14184560/rationale-for-why-javascript-converts-primitive-values-to-numbers-in-operator – Grundy Apr 19 '22 at 14:47
  • @Grundy Спасибо! Просто эта часть показалась очевидной, потому не стал дописывать) – EzioMercer Apr 19 '22 at 14:48
  • 1
    @EzioMercer, не, в таких случаях лучше все расписывать, очевидность - она не всегда верная оказывается :) – Grundy Apr 19 '22 at 14:49
  • @Grundy И не поспоришь! Согласен, в следующий раз так и сделаю ) – EzioMercer Apr 19 '22 at 14:51