Что такое строки

Что такое строки

Технический фундамент строк

В 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 дают разный тип результата?

Микро-сценарии из реальной разработки

  1. Валидация формы регистрации. Ты получаешь name, email, password как строки и должен проверить длину, пустоту, формат.

  2. Отображение карточки товара. Ты собираешь строку для UI: "Nike Air — 12990 ₽" через шаблонную строку.

const productName = 'Nike Air';
const price = 12990;
const cardTitle = `${productName} — ${price} ₽`;

console.log(cardTitle);

Типичные ошибки новичков

  • Путать строку и число после ввода из input.
  • Пытаться изменить символ строки по индексу.
  • Забывать, что индексация начинается с 0.
  • Не проверять длину строки перед доступом к символу.

Краткий итог

  • string хранит текст и часто приходит из форм/API.
  • Строка — неизменяемая последовательность символов.
  • У строки есть length и индексы с нуля.
  • Шаблонные строки `...${...}` удобны для сборки текста.
  • Для расчетов важно отличать строку от числа и явно приводить тип.