Разница между методами valueOf и toString при преобразовании чисел в строки заключается в том, что valueOf используется для численного преобразования, а toString — для строкового. 13
При численном преобразовании сначала вызывается метод valueOf(), а уже затем toString(). 3 При строковом преобразовании наоборот — сначала происходит вызов toString(), а уже потом valueOf(). 3
Метод valueOf обязан возвращать примитивное значение, иначе его результат будет проигнорирован. 1 При этом не обязательно числовое. 1 Метод toString должен возвращать примитивное значение, причём не обязательно именно строку. 1
У большинства встроенных объектов метода valueOf нет, поэтому численное и строковое преобразования для них работают одинаково — оба в конечном итоге вызывают метод toString. 13