String() преобразует значение в строку. Это простой и явный способ получить строковое представление числа, булева значения, null, undefined, массива или другого значения.
Обычно String() используют, когда нужно явно привести тип и получить предсказуемый результат.
Синтаксис
String(value)
value может быть любым значением.
Если вызвать String() без аргумента, вернётся пустая строка:
console.log(String()); // ""
Что делает String()
String() принимает значение и возвращает строку.
console.log(String(123)); // "123"
console.log(String(true)); // "true"
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
Результат всегда имеет тип string.
const result = String(42);
console.log(result); // "42"
console.log(typeof result); // "string"
Преобразование разных значений
Числа
console.log(String(25)); // "25"
console.log(String(3.14)); // "3.14"
console.log(String(-100)); // "-100"
Булевы значения
console.log(String(true)); // "true"
console.log(String(false)); // "false"
null и undefined
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
Это одно из удобных отличий String(): функция не падает на null и undefined, а просто превращает их в строки.
Массивы
console.log(String([1, 2, 3])); // "1,2,3"
console.log(String(["a", "b", "c"])); // "a,b,c"
console.log(String([])); // ""
Для массива результат обычно выглядит как элементы, соединённые через запятую.
Объекты
console.log(String({ name: "Alex" })); // "[object Object]"
Для обычных объектов такой результат редко бывает полезен. Если нужен текст в формате JSON, обычно используют JSON.stringify().
const user = { name: "Alex", age: 25 };
console.log(String(user)); // "[object Object]"
console.log(JSON.stringify(user)); // '{"name":"Alex","age":25}'
String() и toString()
String() и toString() часто дают похожий результат, но работают не одинаково.
console.log(String(123)); // "123"
console.log((123).toString()); // "123"
Главная разница в том, что toString() нельзя вызвать у null и undefined.
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
// null.toString(); // Ошибка
// undefined.toString(); // Ошибка
Если тип значения заранее неизвестен, String() безопаснее.
Почему обычно не используют new String()
String() можно вызвать как обычную функцию или через new.
const a = String(123);
const b = new String(123);
console.log(typeof a); // "string"
console.log(typeof b); // "object"
В первом случае получается строка-примитив. Во втором создаётся объект-обёртка, и это почти никогда не нужно.
Из-за этого могут появляться странности:
const a = "hello";
const b = new String("hello");
console.log(a === b); // false
const value = new String("");
if (value) {
console.log("Условие выполнится");
}
Хотя внутри пустая строка, условие выполнится, потому что объект считается truthy-значением.
Поэтому для преобразования в строку обычно используют только String(value) без new.
Когда это полезно
String() удобно использовать, когда:
- значение может прийти в разных типах
- нужно явно преобразовать значение перед выводом
- хочется избежать неявного приведения через
value + ""
Пример:
const userId = 1001;
const text = "ID пользователя: " + String(userId);
console.log(text); // "ID пользователя: 1001"
Частые ошибки
Путать String() и JSON.stringify()
const user = { name: "Anna" };
console.log(String(user)); // "[object Object]"
console.log(JSON.stringify(user)); // '{"name":"Anna"}'
String() не превращает объект в JSON-строку.
Использовать new String()
const value = new String("text");
Обычно лучше так:
const value = String("text");
Быстрая памятка
String(value)преобразует значение в строку- результат всегда имеет тип
string String()безопасно работает сnullиundefinedtoString()может упасть наnullиundefinednew String()создаёт объект, а не обычную строку
Коротко
String() - это стандартный способ явно преобразовать значение в строку в JavaScript. В обычном коде почти всегда нужен именно вызов String(value), а не new String(value).