ECMA script документация говорит в абстрактном сопоставлении равенства alogorithm, что
Если тип (y) булев, верните результат сравнения x == ToNumber (у).
Так, например, [] == false
будет принудительно, как,
1. [] == Number(false)
2. [] == 0 //comparison happens here.
Мой вопрос в том, что принуждение будет происходить рекурсивно, пока оба операнда не станут примитивными или нет? Как именно здесь происходит принуждение?
Я предполагаю, что принуждение будет повторяться до тех пор, пока преобразование двух операндов в примитивные, как показано ниже
1. [] == Number(false)
2. [] == 0
3. ToPrimitive([]) == 0
4. 0 == 0
5. true
Является ли моя презумпция истиной? Если кто-нибудь не может объяснить, что здесь не так? Также как я могу проверить, что результат ToPrimitive([])
равен 0 в любой консоли браузера?