Вопрос проверяет понимание алгоритма приведения объекта к примитиву и того, какие методы и в каком порядке использует JavaScript.
Короткий ответ
При приведении объекта к примитиву JavaScript сначала пытается вызвать valueOf, а если он не возвращает примитив, вызывает toString. Этот порядок применяется по умолчанию для числового контекста. Если результат всё ещё не примитив, выбрасывается ошибка. Поведение строго описано в спецификации.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.