В КУРСЕ?

Разбираемся в теме

В JavaScript пять плюс два дали 52: где заканчивается текст и начинается число

Внешне одинаковая цифра может храниться в программе как число или как часть строки. В JavaScript это влияет на результат операции сложения. Значение, полученное через свойство value поля ввода, является строкой, поэтому перед расчётом полезно установить правила проверки и преобразования. Разберём небольшой учебный калькулятор без создания сайта и выполнения чужого кода.

Знак плюс умеет выполнять разные операции

Для двух чисел плюс вычисляет сумму. Если одним из обычных операндов является строка, операция может соединять текст. Поэтому строка с цифрой 5 и число 2 дают текстовый результат 52, тогда как два числа 5 и 2 дают 7. Это не случайная ошибка браузера, а различие типов и правил операции. При разборе программы полезно подписывать не только видимое значение, но и его тип. Иначе одинаковая запись на экране скрывает разные входные данные для вычисления.

Преобразование не заменяет проверку пустоты

Функция Number позволяет явно преобразовать подходящую строку в число. Но пустая строка и строка только из пробелов при таком преобразовании дают ноль. Если пустое поле означает отсутствие ответа, принять этот ноль без отдельной проверки будет ошибкой логики. Сначала определите правило задачи: обязательное ли поле, какие записи допустимы и что сообщать при ошибке. Затем проверьте исходный текст и выполните преобразование. Не нужно молча исправлять любой непонятный ввод в удобное значение, если такое поведение не предусмотрено.

Результат преобразования тоже проверяют

Неподходящая числовая запись может дать специальное значение NaN, означающее неудачный числовой результат. Метод Number.isFinite проверяет, что переданное значение является конечным числом. Он сам не преобразует строку в число, поэтому порядок действий имеет значение. Даже конечное число может не подходить задаче. Например, количество предметов по выбранному правилу может требовать целого неотрицательного значения. Проверка типа, успешности преобразования и предметного ограничения являются отдельными этапами. Для первого упражнения достаточно увидеть эту последовательность на бумаге.

Попробуйте на практике

Подготовьте бумажный план простого сложения двух обязательных числовых полей, не открывая консоль браузера и не вставляя код на чужой сайт.

  1. Запишите первый случай: из полей пришли строки с цифрами 5 и 2. Отметьте их тип и предскажите текстовое соединение 52 при сложении строк без явного преобразования.
  2. Опишите нужный порядок: проверить, что поля не пусты после удаления внешних пробелов, преобразовать значения через Number, проверить результат и только затем складывать числа.
  3. Добавьте случаи пустой строки и текста с посторонними буквами. Для первого предусмотрите сообщение об отсутствии значения, для второго ошибку неподходящей числовой записи.
  4. Сформулируйте ожидаемый итог для корректного случая: число 7. Укажите, что Number.isFinite применяется к преобразованным значениям и не заменяет правило обязательного заполнения.

Как проверить результат. Строки не смешаны с числами, пустое поле не принято за настоящий ноль, а проверка выполняется до вычисления результата.

Частые вопросы

Если в поле видна цифра, значение уже числовое?

Не обязательно. Свойство value возвращает строку. Нужно понимать, каким способом данные получены и проверены.

Number.isFinite превращает текст в число?

Нет. Метод проверяет тип и конечность переданного значения без такого преобразования. Его используют на соответствующем этапе.

Ноль всегда означает пустой ввод?

Нет. Человек может действительно ввести ноль. Поэтому исходную пустоту проверяют отдельно, не отбрасывая все нулевые значения автоматически.

Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов