Что такое…

Что такое строка в программировании — и почему «5» и 5 не одно и то же

Иллюстрация: бусины на нитке — и одна бусина, распавшаяся на две половинки

Открой консоль браузера и напиши "2" + "2". Ответ будет "22". Не четыре. Компьютер не ошибся — он просто склеил два кусочка текста.

Вот и вся загадка строк: для программы 5 и "5" — разные вещи. Одно — число, с ним можно считать. Другое — текст, который выглядит как число. Разница в двух кавычках, а ломает она половину программ новичков.

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

Строка (по-английски string) — это текст внутри программы. Любой: имя, пароль, адрес, сообщение в чате, даже одна буква. Признак простой: строка стоит в кавычках.

const name = "Аня"
const city = 'Алматы'
const greeting = `Привет, ${name}!`   // обратные кавычки умеют вставлять переменные

Слово «строка» пошло от английского string of characters — «нитка символов». Представь бусы: каждая бусина — одна буква, а нитка держит их по порядку. Буквы можно пересчитать, взять первую, отрезать кусок.

"Привет".length   // 6 — шесть бусин
"Привет"[0]       // "П" — первая бусина, счёт идёт с нуля

Строку хранят в переменной, как и всё остальное. Просто в этой коробке лежит текст, а не число.

Почему «5» и 5 — разные вещи

Кавычки меняют смысл. Число 5 программа складывает, умножает, сравнивает по величине. Строку "5" она видит как картинку из одного символа.

5 + 2      // 7
"5" + 2    // "52" — число приклеилось к тексту
"5" - 2    // 3 — а тут JavaScript вдруг решил посчитать

Последняя строчка — ловушка JavaScript. Минус у текста не бывает, поэтому язык молча превращает "5" в число. А плюс для текста бывает — это склейка. Одинаково выглядящий код ведёт себя по-разному.

Ещё хитрость: строки сравниваются по буквам, а не по величине. "10" < "9" даёт true — ведь символ «1» идёт раньше «9». Поэтому список цен, записанных текстом, сортируется как попало: 1, 10, 9.

Где строки подкрадываются незаметно

Главное правило, которое сэкономит тебе часы отладки: всё, что пришло снаружи, почти всегда строка.

  • Поле формы. Даже <input type="number"> отдаёт значение текстом. Пользователь ввёл 3 — в коде лежит "3".
  • Адресная строка. В ?page=2 двойка — это "2".
  • localStorage. Браузер хранит там только текст. Положил число — достанешь строку.
  • Файлы и CSV. Таблица, которую ты загрузил, — это строки, пока ты сам не скажешь иначе.

Поэтому классическая жалоба «корзина считает сумму неправильно» часто означает одно: цены пришли строками, и 100 + "200" превратилось в "100200". Как это чинить — разобрали в статье как превратить строку в число.

А вот JSON — приятное исключение. Там у чисел нет кавычек, и после разбора они приходят числами. Если, конечно, сервер не прислал "price": "200".

Сюрприз с эмодзи

Проверь сам: "👍".length вернёт 2. Один значок — два «символа». А семейство "👨‍👩‍👧" потянет на восемь.

Дело в том, как JavaScript хранит текст. Большинство букв влезают в одну ячейку, а эмодзи — в две. Сложные эмодзи склеены из нескольких штук. Для кириллицы можно не волноваться: "Привет".length честно даёт 6.

Где это стреляет на практике:

  • лимит символов. Ты ограничил подпись 20 символами, а пользователь с эмодзи упирается в лимит раньше;
  • обрезка текста. Режешь строку по длине — и эмодзи разваливается пополам на странный квадратик.

Если твоё приложение про сообщения или подписи — попроси ИИ считать длину через [...text].length. Так эмодзи считается за один.

Что со строкой можно делать

У строк есть готовые команды — методы, которые вызываются через точку. В коде от ИИ ты увидишь их постоянно:

"  аня  ".trim()             // "аня" — убрать пробелы по краям
"аня".toUpperCase()          // "АНЯ"
"a,b,c".split(",")           // ["a", "b", "c"] — порезать в массив
"Привет".includes("вет")     // true — есть ли кусок внутри
"кот".replace("к", "р")      // "рот"

Одна важная деталь: строку нельзя изменить на месте. Все эти команды возвращают новую строку, а старая остаётся как была. Написал name.trim() и не сохранил результат — пробелы никуда не делись.

split особенно полезен: он превращает текст в массив. Так из строки «яблоки, груши, сливы» получается список, по которому можно пройтись циклом.

Чем одинарные кавычки отличаются от двойных?

В JavaScript — ничем, это вопрос вкуса. Обратные кавычки ` особенные: внутри них можно вставлять переменные через ${...} и переносить строки.

Пустая строка — это то же самое, что null?

Нет. "" — это текст, в котором ноль букв. null — отсутствие значения вообще. Поле формы, которое не заполнили, обычно приходит пустой строкой, а не null.

Как понять, строка у меня или число?

Напиши в коде console.log(typeof price). Ответ "string" — значит, текст, и считать им опасно. "number" — всё в порядке.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →