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:
let obj = {
[Symbol.toPrimitive](hint) {
if (hint === 'string') return 'Строковое представление';
return 42;
}
};
console.log(String(obj));
console.log(+obj);'Строковое представление' 42
Преобразование функций и классов:
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):
let p = Promise.resolve(10);
console.log(String(p));'[object Promise]'
Создание последовательности символов через String.fromCharCode:
// Это статический метод объекта String, а не глобальная функция
console.log(String.fromCharCode(65, 66, 67, 0x1F600)); // Смайлик не выведется полностью'ABC'
Для Unicode-символов за пределами BMP лучше использовать String.fromCodePoint.
Явное преобразование при строгом сравнении:
let userInput = '123';
let strictValue = 123;
// Безопасное сравнение строкового представления
if (String(userInput) === String(strictValue)) {
console.log('Значения совпадают при строковом сравнении');
}Значения совпадают при строковом сравнении