Почему это сравнение [0] == false вернет правду?
Asked
Active
Viewed 42 times
0
1 Answers
0
Очень забавно, то что меня заминусовали, и написали банальные вещи, а мне хотелось понять как это работает под капотом
Если кратко, то в этом кейсе обо значения приводятся к числу и становятся 0 -ми
Более подробно можно прочитать здесь
user447630
- 123
-
-
1Хороший вопрос) И так начнём по порядку. Для начала надо понять что
[0] == false- не то же самое что иBoolean([0]) == false или !![0] == false. В первом случае вызывается метод array.toString(), что возаращает нам'0'. Во втором случае у нас получитсяtrue == false, что вернёт намfalse, т.к. все объекты и массивы - это true. – EzioMercer Apr 19 '22 at 14:36 -
1
-
Там единтсвенное остаётся понять, почему
'0' == false. А это потому что при сравнении'0'приводится к числу и получается сравнение0 == false, а этоtrue– EzioMercer Apr 19 '22 at 14:37 -
-
хотелось понять как это работает под капотом - в дубликате описан алгоритм сравнения. – 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
-
[0] == 0истина, а 0 == false, поэтому [0] == false - истина. – Vladimir Gonchar Apr 19 '22 at 14:30A == BиB==Cследует, чтоA==C:) – Grundy Apr 19 '22 at 14:38