← Все вопросы

Как преобразовать строку в число в JS и что значит +"5"?

Задан 12 месяцев назад1.2к просмотров4 ответа
15

Получаю число из input как строку. Какие есть способы превратить '5' в число 5? И почему +"5" вдруг работает?

4 ответа

30
✓ Принятый ответ — помог автору

Способов несколько:

Number('5')      // 5
Number('5.5')    // 5.5
Number('abc')    // NaN (не число)

parseInt('5px')  // 5   — берёт число с начала, мусор после игнорит
parseFloat('5.5kg') // 5.5

+'5'             // 5   — унарный плюс, тот же Number

Про +"5": одиночный плюс перед строкой — это унарный оператор, который приводит операнд к числу. То есть +"5" == Number("5") == 5. Коротко, но многих сбивает с толку, потому что выглядит магически.

На практике:

  • Number(x) — когда строка должна быть числом целиком.
  • parseInt(x, 10) — когда нужно выдрать целое из начала строки (не забывай второй аргумент 10 — систему счисления!).
  • +x — коротко в своём коде, но в команде лучше явный Number(x) для читаемости.
Анастасия Гусева про parseInt с основанием 10 — важно, спасибо · 12 месяцев назад
13

Number(str) или +str. parseInt, если в строке есть лишние символы после числа.

6

Осторожно: parseInt('08') в старых движках мог дать 0 (трактовал как восьмеричное). Всегда пиши parseInt('08', 10).

-2

Просто parseInt, и всё.

Егор Гутников без основания 10 это грабли, Number чаще надёжнее · 12 месяцев назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект