Я пытаюсь понять выражение {} == 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)
?