Всем привет! Скажите, в чём разница между функциями ParseFloat
, ParseInt
и Number
? В результате этих функций строка преобразуется в число.
alert('3' + 2);
//--------------------------//
alert(parseFloat('3') + 2);
alert(parseInt('3') + 2);
alert(Number('3') + 2);
parseFloat
и parseInt
преобразуют в число максимальную соответствующую подстроку, с начала строки, отбросив предварительно пробельные символы.
Number
- целую строку, так же отбросив предварительно пробельные символы.
Различие можно увидеть на примере
//--------------------------//
console.log(parseFloat('3a'));
console.log(parseInt('3a'));
console.log(Number('3a'));
Для более полного понимания различий можно обратиться к спецификации
Если данная функция вызывается без new
, то
+0
Где ToNumber(value) - это абстрактная функция, вызываемая, когда необходимо получить числовое значение.
Стоит обратить внимание, что, в отличие от рассмотренных ниже функций, параметр value
будет приведен к строке только в некоторых случаях.
В случае, если value
был приведен к строке, эта строка должна удовлетворять грамматике для StringNumericLiteral. Отличие данной грамматики от обычного NumericLiteral, который определяет правила для литералов чисел, в том, что:
+
или -
для указания знака числа.+0
.Отличительной особенностью данной функции является возможность передать вторым параметром основание системы счисления, в которой находится число в строке. По умолчанию данный параметр имеет значение: 10.
Стоит отметить, что первый аргумент всегда приводится к строке.
Алгоритм работы данной функции весьма прост:
Как можно заметить, в отличие от описанной выше функции Number, для разбора используется не вся строка, распознается только префикс для шестнадцатеричных чисел, но при этом добавляется возможность указать основание системы счисления от 2 до 36
Как и в parseInt, в данной функции всегда идет приведение аргумента к строке.
Алгоритм схож с работой функции parseInt
Как можно заметить, по сравнению с Number, для разбора используется часть строки, не допустимы никакие префиксы вроде 0x, 0b, 0o. В отличие от parseInt допустима e-нотация
function showOutput(str, base) {
console.log('строка:"' + str + '"', 'Number:', Number(str), 'parseInt:', parseInt(str, base), 'base:', base || 10, 'parseFloat:', parseFloat(str));
}
showOutput(' ');
showOutput('10');
showOutput('3a');
showOutput('0x10');
showOutput('0x10s');
showOutput('0o10');
showOutput('1e2');
showOutput('1e2', 16);
.as-console-wrapper {
max-height: 100% !important;
top: 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я хочу что бы у меня в адресной строке ссылка со скриптом открывалась не вот так
Хочу разобраться в коде, но его минимизировали, а упорядочить у меня его не получаетсяКак это можно сделать? сам код https://cdn-cis