← Назад ко всем вопросам

В чём разница между приведением типов к числу через number и через унарный плюс

1️⃣ Как кратко ответить

Приведение типов к числу через Number() и унарный плюс (+) в JavaScript выполняют схожие функции, но Number() является функцией, а унарный плюс — оператором. Number() более явный и может быть предпочтительным для читаемости кода, тогда как унарный плюс более лаконичен. Оба метода могут возвращать NaN для некорректных преобразований, но Number() может быть более предсказуемым в некоторых случаях, например, при работе с объектами.

2️⃣ Подробное объяснение темы

В JavaScript часто возникает необходимость преобразования значений различных типов в числа. Для этого можно использовать функцию Number() и унарный плюс (+). Оба метода выполняют схожие задачи, но имеют свои особенности.

Преобразование через Number()

Number() — это встроенная функция JavaScript, которая принимает аргумент и пытается преобразовать его в число. Если преобразование невозможно, возвращается NaN (Not-a-Number).

Пример:

let str = "123";
let num = Number(str); // Преобразует строку "123" в число 123
  • Number("123") вернет 123, так как строка содержит только цифры.
  • Number("abc") вернет NaN, так как строка не может быть преобразована в число.
  • Number(true) вернет 1, так как логическое значение true преобразуется в 1.
  • Number(false) вернет 0, так как логическое значение false преобразуется в 0.

Преобразование через унарный плюс (+)

Унарный плюс — это оператор, который также преобразует значение в число. Он более лаконичен, чем Number(), и часто используется для краткости.

Пример:

let str = "123";
let num = +str; // Преобразует строку "123" в число 123
  • +"123" вернет 123, аналогично Number("123").
  • +"abc" вернет NaN, аналогично Number("abc").
  • +true вернет 1, аналогично Number(true).
  • +false вернет 0, аналогично Number(false).

Сравнение и особенности

  1. Явность и читаемость: Number() более явный, что может улучшить читаемость кода, особенно для разработчиков, которые не знакомы с унарным плюсом.

  2. Лаконичность: Унарный плюс более краток и может быть предпочтительным в ситуациях, где важна компактность кода.

  3. Обработка объектов: При работе с объектами Number() и унарный плюс могут вести себя по-разному. Например, если объект имеет метод valueOf, который возвращает число, оба метода используют его. Однако, если метод valueOf отсутствует, Number() может попытаться использовать метод toString, тогда как унарный плюс может сразу вернуть NaN.

Пример с объектом:

let obj = {
  valueOf: function() {
    return 42;
  }
};
​
let num1 = Number(obj); // Вернет 42
let num2 = +obj;        // Вернет 42

В этом примере оба метода возвращают 42, так как объект имеет метод valueOf, который возвращает число.

Заключение

Оба метода — Number() и унарный плюс — полезны для приведения типов к числу в JavaScript. Выбор между ними зависит от предпочтений в читаемости и лаконичности кода. Важно понимать, как они работают, чтобы избежать неожиданных результатов, особенно при работе с более сложными типами данных, такими как объекты.

Тема: JavaScript
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки