Что такое строки
Что такое строки
Технический фундамент строк
В JavaScript строка (string) — примитивный тип данных для текстовой последовательности.
Важно отличать примитивную строку от объектной обертки new String(...): в продовом коде почти всегда нужен именно примитив.
const plain = 'hello';
const wrapped = new String('hello');
console.log(typeof plain); // string
console.log(typeof wrapped); // object
console.log(plain === wrapped); // false
Ключевой момент: большинство строковых операций ожидают примитив string, а обертка может давать неочевидное поведение в сравнениях.
Базовая идея: строка — это последовательность символов
Строку можно записать в одинарных кавычках '...', двойных "..." или в шаблонной строке `[...](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax)`.
const city = 'Berlin';
const role = "admin";
const greeting = `Привет, ${city}!`;
console.log(city); // Berlin
console.log(greeting); // Привет, Berlin!
Новый термин: интерполяция — это вставка значения внутрь шаблонной строки через ${...}.
Что важно про поведение строк
Строки в JavaScript неизменяемые (immutable). Это значит: ты не меняешь существующую строку «внутри», а создаешь новую.
let title = 'JavaScript';
title[0] = 'j'; // попытка изменить символ не сработает
title = 'j' + title.slice(1); // создаем новую строку
console.log(title); // javaScript
Здесь часто путаются: кажется, что title[0] = 'j' должен сработать, но нет. У строки нет «изменения по месту», только создание новой версии.
Проверь себя: что выведет console.log('abc'[1])?
Длина строки и индексы
У строки есть свойство length — количество символов. Индексация начинается с 0.
const code = 'A1B2';
console.log(code.length); // 4
console.log(code[0]); // A
console.log(code[3]); // 2
console.log(code[10]); // undefined
Если индекс вне диапазона, ты получишь undefined, а дальше возможны ошибки в коде (например, при вызове методов у undefined).
Смотри, что важно: length и доступ по индексу работают по UTF-16 кодовым единицам. Для некоторых Unicode-символов (например, эмодзи) длина может быть неожиданной:
console.log('😀'.length); // 2
console.log('😀'[0]); // часть символа (не весь эмодзи)
В большинстве задач со стандартными буквами/цифрами это не мешает, но про это полезно знать.
Приведение типов к строке
Когда ты объединяешь строку с другим типом через +, JavaScript часто приводит второй операнд к строке.
console.log('ID: ' + 15); // ID: 15
console.log('Цена: ' + true); // Цена: true
Это удобно, но в расчетах может дать баг.
console.log('2' + 2); // 22
console.log(Number('2') + 2); // 4
Анти-провал: если ожидаешь число, не доверяй входу «на глаз». Явно приводи тип через Number(...).
Проверь себя: почему '10' + 5 и '10' - 5 дают разный тип результата?
Микро-сценарии из реальной разработки
-
Валидация формы регистрации. Ты получаешь
name,email,passwordкак строки и должен проверить длину, пустоту, формат. -
Отображение карточки товара. Ты собираешь строку для UI:
"Nike Air — 12990 ₽"через шаблонную строку.
const productName = 'Nike Air';
const price = 12990;
const cardTitle = `${productName} — ${price} ₽`;
console.log(cardTitle);
Типичные ошибки новичков
- Путать строку и число после ввода из
input. - Пытаться изменить символ строки по индексу.
- Забывать, что индексация начинается с
0. - Не проверять длину строки перед доступом к символу.
Краткий итог
stringхранит текст и часто приходит из форм/API.- Строка — неизменяемая последовательность символов.
- У строки есть
lengthи индексы с нуля. - Шаблонные строки
`...${...}`удобны для сборки текста. - Для расчетов важно отличать строку от числа и явно приводить тип.