String: примеры (JAVASCRIPT)

Работа с функцией String в языке JavaScript
Раздел: Основные типы, Конструкторы
String(value (any)): string

Основы функции String

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

Назначение:

Основная задача – явное преобразование любого типа данных в строку. Это полезно при конкатенации, выводе данных или необходимости гарантированно работать со строковым представлением.

Аргументы:

  • value (необязательный): Значение, которое нужно преобразовать в строку. Если аргумент опущен, возвращается пустая строка ''.

Возвращаемое значение:

  • Строковое представление переданного аргумента. Для null возвращается 'null', для undefined'undefined', для логических значений – 'true' или 'false'. Объекты преобразуются с помощью своего метода toString(), если он определен, иначе возвращается '[object Object]' (или подобное).

Базовые примеры использования

Преобразование разных типов данных:

console.log(String(42));
console.log(String(true));
console.log(String(null));
console.log(String(undefined));
console.log(String({name: 'John'}));
console.log(String([1, 2, 3]));
'42'
'true'
'null'
'undefined'
'[object Object]'
'1,2,3'

Использование как конструктора:

let strObj = new String('Hello');
console.log(typeof strObj);
console.log(strObj instanceof String);
let strPrim = String('Hello');
console.log(typeof strPrim);
object
true
string

Похожие методы в JavaScript

  • Метод toString(): Вызывается у конкретного значения. Не работает для null и undefined. Может принимать систему счисления для чисел. String() является более универсальным и безопасным способом.
  • Шаблонные литералы (бэктики): `${value}`. Современный и удобный способ встраивания выражений в строки. Неявно вызывает преобразование.
  • Конкатенация с пустой строкой: '' + value. Старый, но распространенный способ неявного преобразования. Может привести к неожиданным результатам с массивами и объектами.
  • Метод valueOf() для объектов String: Возвращает примитивное значение из строкового объекта. Полезен при необходимости получить примитив из обертки.

Аналоги в других языках

PHP:

echo (string) 123; // Приведение типа
echo strval(3.14); // Функция strval()
123
3.14

Python:

print(str(100))
print(repr({'a': 1}))  # Для отладочного представления
100
{'a': 1}

MySQL:

SELECT CAST(100 AS CHAR), CONCAT('ID:', 5);
'100', 'ID:5'

C:

#include <stdio.h>
int main() {
    int num = 255;
    char str[20];
    sprintf(str, "%d", num); // Преобразование в строку
    printf("%s", str);
    return 0;
}
255

Главное отличие JavaScript-функции String() – ее универсальность и работа со специальными значениями (null, undefined), которые во многих языках вызвали бы ошибку.

Распространенные ошибки

1. Путаница между примитивом и объектом:

let s1 = new String('text');
let s2 = 'text';
console.log(s1 === s2); // Сравнение по ссылке и значению
false

Использование new String() создает объект, который не равен примитиву.

2. Ожидание глубокого преобразования объекта:

let obj = { a: 1, b: 2 };
console.log(String(obj));
console.log(JSON.stringify(obj)); // Альтернатива для структур
'[object Object]'
'{"a":1,"b":2}'

3. Потеря точности при преобразовании очень больших чисел:

let bigNum = 1e30;
console.log(String(bigNum));
'1e+30'

Изменения в новых версиях

Функция String() остается стабильной и неизменной на протяжении многих версий ECMAScript. Основные изменения касаются не ее самой, а связанных механизмов:

  • В ES2015 (ES6) появился символьный метод Symbol.toPrimitive, который функция String() использует для преобразования объектов, если он определен.
  • Также в ES6 добавлены шаблонные литералы, которые стали предпочтительной альтернативой для многих сценариев построения строк.

Расширенные примеры

Использование с Symbol.toPrimitive:

Пример javascript
let obj = {
  [Symbol.toPrimitive](hint) {
    if (hint === 'string') return 'Строковое представление';
    return 42;
  }
};
console.log(String(obj));
console.log(+obj);
'Строковое представление'
42

Преобразование функций и классов:

Пример javascript
console.log(String(function foo(a,b) { return a+b; }));
console.log(String(class MyClass {}));
'function foo(a,b) { return a+b; }'
'class MyClass {}'

Работа с экзотическими объектами (например, Promise):

Пример javascript
let p = Promise.resolve(10);
console.log(String(p));
'[object Promise]'

Создание последовательности символов через String.fromCharCode:

Пример javascript
// Это статический метод объекта String, а не глобальная функция
console.log(String.fromCharCode(65, 66, 67, 0x1F600)); // Смайлик не выведется полностью
'ABC'

Для Unicode-символов за пределами BMP лучше использовать String.fromCodePoint.

Явное преобразование при строгом сравнении:

Пример javascript
let userInput = '123';
let strictValue = 123;
// Безопасное сравнение строкового представления
if (String(userInput) === String(strictValue)) {
  console.log('Значения совпадают при строковом сравнении');
}
Значения совпадают при строковом сравнении

JS String function comments

En
String Converts a value to a string