Как JavaScript преобразует объект к примитивному значению?
Уровень: Senior
Ответ
Когда требуется использовать объект там, где нужен примитив (например, при сложении объекта с числом или сравнении с строкой), JavaScript пытается преобразовать объект к примитиву (строке или числу). Алгоритм таков: он вызывает у объекта метод `valueOf` (если существует) – должен вернуть примитив. Если valueOf не вернул примитив, вызывается метод `toString`. То, что вернёт toString (обычно строка), и будет примитивным представлением. Например, у массива метод toString возвращает объединённые элементы, поэтому `[1,2] + ""` -> `"1,2"`. У объекта по умолчанию valueOf возвращает сам объект, а toString – строку `"[object Object]"`. Поэтому, например, `{} + ""` -> \"[object Object]\".