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
как анализатор, а не преобразователь.
Номер
: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 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(строка ,основание )
Значения параметров
Параметр | Описание |
---|---|
строка | Обязательно. |