Learn JavaScript

String() - функция для преобразования в строку в JavaScript

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 и undefined
  • toString() может упасть на null и undefined
  • new String() создаёт объект, а не обычную строку

Коротко

String() - это стандартный способ явно преобразовать значение в строку в JavaScript. В обычном коде почти всегда нужен именно вызов String(value), а не new String(value).