"") работает так:
1. идет сравнение без приведения типов
2. сравнивается 0 и ""
3. имеется 0 - число, и "" - строка
4. преобразуем ""
4.1. преобразуем "" в число
4.2. "" преобразуется в 0
5. в итоге получается сравнение 0 == 0
6. получается true
запись: ([] == "") работает так:
1. идет сравнение без приведения типов
2. сравнивается [] и ""
3. имеется [] - массив, и "" - строка
4. преобразуем []
4.1. преобразуем [] в строку
4.2. [] преобразуется в ""
4.3. преобразуем "" в число
4.4. "" преобразуется в 0
5. преобразуем ""
5.1. преобразуем "" в число
5.2. "" преобразуется в 0
6. в итоге получается сравнение 0 == 0
7. получается true
верно? Или массив со строкой по другому сравнивается?
есть метод toString, при сравнении он вызывается если есть
я знаю, спрашиваю верно ли я понял порядок преобразований
Русским языком тут сравнивается равен ли 0 пустой строке
мне больше интересно как сравнивается массив со строкой
console.log([].toString())
возможно ещё что 0 и "" приводятся к булевому значению false ибо по отдельности в ифе они и будут его выдавать, но это не точно
нет, приводятся к числу в таком случае
если кому интересно как сравнивать ([] == "") вот тут (https://262.ecma-international.org/5.1/#sec-11.9.3) пункт 8/9. Оказывается массив просто преобразуется в строку и сразу сравнивается, а не преобразуется все до числа
Обсуждают сегодня