Какой результат получится при вычислении выражения 2 + '2' - '1' в языке программирования JavaScript с учётом особенностей преобразования типов данных?

28.02.2026 20:16
Обновлено: 01.03.2026 09:14

Подробное объяснение

В JavaScript выражение 2 + '2' - '1' вычисляется как 21 благодаря специфическим правилам преобразования типов данных. Сначала оператор '+' выполняет конкатенацию, преобразуя число 2 в строку '2' и объединяя её со строкой '2', что даёт строку '22'. Затем оператор '-' вынуждает JavaScript преобразовать обе строки в числа: '22' становится числом 22, а '1' — числом 1, после чего выполняется арифметическое вычитание 22 - 1, результатом которого является число 21. Это демонстрирует, как JavaScript автоматически приводит типы данных в зависимости от используемых операторов.

Часто задаваемые вопросы (FAQ)

1 Почему в JavaScript 2 + '2' даёт '22', а не 4?
Потому что оператор '+' при наличии хотя бы одного строкового операнда выполняет конкатенацию, преобразуя все операнды в строки, а не арифметическое сложение.
2 Как оператор '-' влияет на преобразование типов в JavaScript?
Оператор '-' всегда пытается выполнить численное вычитание, поэтому он автоматически преобразует все операнды в числа, даже если они изначально были строками.
3 Какие ещё операторы в JavaScript ведут себя аналогично '+' или '-'?
Операторы '*' (умножение), '/' (деление) и '%' (остаток от деления) также преобразуют операнды в числа, как и '-', в отличие от '+', который может выполнять конкатенацию.

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

1 Предположение, что 2 + '2' даст 4, а затем 4 - '1' даст 3
Это неверно, потому что оператор '+' с строкой '2' выполняет конкатенацию, а не арифметическое сложение, поэтому первым шагом получается '22', а не 4.
2 Думать, что '22' - '1' даст '221' или другую строку
Это ошибка, так как оператор '-' не поддерживает конкатенацию строк; он всегда преобразует строки в числа для выполнения вычитания, что приводит к числовому результату 21.
3 Игнорирование правил преобразования типов и вычисление выражения как чисто числового: 2 + 2 - 1 = 3
Это неверно, потому что в JavaScript строки '2' и '1' не обрабатываются как числа без явного преобразования; их тип влияет на результат в зависимости от операторов.

Установите расширение Poresh.Ai

Решайте тесты мгновенно с помощью искусственного интеллекта прямо в браузере

Автоматическое распознавание вопросов
ИИ-анализ и подробные объяснения
Работает на любых образовательных платформах
Безопасно и конфиденциально