Правильно ли я понял преобразование типов? Я читал это.
Алгоритм:
[] приводится к примитиву потому что:
If Type(x) is Object and Type(y) is either String or Number, return the result of the comparison ToPrimitive(x) == y.
ToPrimitive вызывается с hint String, то есть подсказка что нужно преобразовать к строке. Такая подсказка указана из-за того что '0' строка.
ToPrimitive вызывает toString, возвращается пустая строка '' (перечисление элементов через запятую).
После этого выполняется еще одно выражение ==: '' === '0' (пустая строка из массива и изначальный '0').
Тут уже срабатывает алгоритм сравнения строк:
If Type(x) is the same as Type(y), then
If Type(x) is String, then return true if x and y are exactly the same sequence of characters (same length and same characters in corresponding positions). Otherwise, return false.
То есть строки разные, поэтому false.
Я просто читал эту страницу, там залайкан не правильный ответ.
'' === '0'. Еще "and one is falsy the other is not.", это не понятно, там пример кода внизу где оба Truthy. Еще такой прикол: "if you coerce an empty array to a number, you get it's length - which is zero", путает новичков. – Илья Зелень Apr 09 '19 at 11:15ToPrimitive(x),hintпередавался бы отдельным параметром, напримерToPrimitive(x, 'number')илиToPrimitive(x, 'string')– Grundy Apr 09 '19 at 12:03ToPrimitiveесть в ответе на вопрос В чем разница между valueOf и toString – Grundy Apr 09 '19 at 12:04ToPrimitiveс[]иhint="default"(то естьnumber) И получается будет вызыванtoStringиз-за условияЕсли Type(result) не Object, вернуть result.И второй вопрос, чтобы я точно был уверен, по сути в примере что я навел с[] == '0'будет использовано внутри интерпретатора еще одно сравнение==('' === '0', после приведения массива)? То есть язык может приводить типы и внутри вызывать еще свое сравнение для приведенных типов? (наверно не больше одного сравнения) Надеюсь поняли о чем я)) – Илья Зелень Apr 09 '19 at 15:10({}) == "[object Object]"этоtrue.valueOfполучается игнорится из-за того что возвращает сам объект (как и с массивом было). – Илья Зелень Apr 10 '19 at 05:01