Я пытаюсь понять выражение {} == true после раздела 7.2.12 документа Ecma-262.
- Если тип (y) булев, верните результат сравнения
x == ToNumber(y)
Результат ToNumber(true) равен 1, тогда
{} == 1
- Если Type (x) - это Object и Type (y), это либо String, Number, либо Symbol, тогда верните результат сравнения
ToPrimitive(x) == y.
Теперь я запутался в ToPrimitive({}).
Если подсказка "string", то
а. Пусть methodNames будет "toString", "valueOf" ".
Else
а. Пусть methodNames будет" "valueOf", "toString" ".
Если ToPrimitive({}) интерпретироваться как {}.toString() или {}.valueOf()?
Предположим, что вызывается toString().
Если Type (x) - String, а Type (y) - Number, верните результат сравнения
ToNumber(x) == y
Итак, {} == true может быть ToNumber(ToPrimitive({})) == ToNumber(true)?