Js toint: parseInt() — JavaScript | MDN

javascript — Почему Number.parseInt(‘111AAA’) работает так, как предполагалось в JS? В чем причина такого поведения?

спросил

Изменено 1 год, 7 месяцев назад

Просмотрено 137 раз

Если я выполню parseInt('111AAA') мы получаем вывод '111' . Почему в javascript parseInt работает так, как указано в документах MDN.

Функция parseInt преобразует свой первый аргумент в строку, анализирует это и возвращает целое число или NaN. Если не NaN, возвращаемое значение будет быть десятичным целочисленным представлением первого аргумента, взятого как число в указанной системе счисления (базе). Например, система счисления 10 указывает на преобразование из десятичного числа, 8 восьмеричных, 16 шестнадцатеричных, и так далее. Для корней выше 10 буквы алфавита обозначают цифры больше 9. Например, для шестнадцатеричных чисел (основание 16), от A до F.

Если parseInt встречает символ, который не является цифрой в указанной системы счисления, он игнорирует ее и все последующие символы и возвращает целочисленное значение, проанализированное до этой точки. parseInt усекает числа в целые значения. Допускаются начальные и конечные пробелы.

Я начал изучать JS, и у меня есть опыт работы с Java и C. Разве он не должен выдавать ошибку, если ему предоставляется буквенно-цифровое значение. В чем причина такого поведения? Есть ли какой-либо другой язык, который принимает это?

Редактировать: @jabaa указал, что аналогичная функциональность существует в C https://en.cppreference.com/w/cpp/string/basic_string/stol

  • javascript
  • ecmascript-2017
  • ecma

7

Как следует из названия, parseInt как анализатор, а не преобразователь.

В то время как преобразователь берет строку целиком и пытается понять ее смысл, синтаксический анализатор потребляет входной символ за символом и останавливается на первом символе, который он не может обработать. В javascript преобразователь чисел равен Номер :

 console.log(Число('123foo'))
console.log(parseInt('123foo')) 

В C atoi , strtol и подобные функции — все парсеры, а не преобразователи.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

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

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Функция JavaScript parseInt()

Глобальные функции JavaScript

Пример

Анализ различных строк:

var a = parseInt(«10») + «
«;
var b = parseInt(«10. 00″) + «
«;
var c = parseInt(«10.33») + «
«;
var d = parseInt(«34 45 66») + «
«;
var e = parseInt(«60») + «
«;
var f = parseInt(«40 лет») + «
«;
var g = parseInt(«Ему было 40») + «
«;

var h = parseInt(«10»,10)+ «
«;
var i = parseInt(«010»)+ «
«;
var j = parseInt(«10»,8)+ «
«;
вар k = parseInt(«0x10»)+ «
«;
var l = parseInt(«10»,16)+ «
«;

var n = a + b + c + d + e + f + g + «
» + h + i + j + k +l;

Результатом n будет:

Попробуйте сами »


Определение и использование

Функция parseInt() анализирует строку и возвращает целое число.

Параметр системы счисления используется для указания используемой системы счисления для например, система счисления 16 (шестнадцатеричная) указывает, что число в строке следует преобразовать из шестнадцатеричного числа в десятичное число.

Если параметр системы счисления опущен, JavaScript принимает следующее:

  • Если строка начинается с «0x», основание равно 16 (шестнадцатеричное)
  • Если строка начинается с «0», основание равно 8 (восьмеричное).
    Этот функция устарела
  • Если строка начинается с любого другого значения, основание равно 10 (десятичное)

Примечание: Возвращается только первое число в строке!

Примечание: Допускаются начальные и конечные пробелы.

Примечание: Если первый символ не может быть преобразован в число, parseInt() возвращает NaN.

Примечание: Старые браузеры возвращают parseInt(«010») как 8, потому что более старые версии ECMAScript (старше, чем ECMAScript 5, используют восьмеричный Основание (8) по умолчанию, когда строка начинается с «0». Начиная с ECMAScript 5, по умолчанию используется десятичная система счисления (10).


Поддержка браузера

Функция
разборInt() Да Да Да Да Да

Синтаксис

parseInt(строка ,основание )

Значения параметров

Параметр Описание
строка Обязательно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *