Как убрать начальные нули из числа в параметре функции
У меня есть функция, которая принимает число / целое число в качестве параметра, и я пытаюсь удалить любые возможные начальные нули из этого числа, прежде чем делать что-либо еще в функции. Однако числа с ведущими нулями, кажется, анализируются каким-то образом уже до того, как я смогу что-то сделать с параметром функции.
Пока я попробовал это:
function numToString(num){
var string = num.toString();
console.log(string);
};
numToString(0011); // output is "9"
numToString(1111); // output is "1111"
Я также попробовал это:
function numToString(num, base){
var string = num.toString();
var parse = parseInt(string, base);
console.log(parse);
};
numToString(0011, 10); // output is "9"
numToString(1111, 10); // output is "1111"
Конечно, второй пример не работает, так как num.toString()
не дал мой ожидаемый результат в первую очередь. Я не хочу заменять параметр функции "num" на строку, но оставляю ее как число.
Может быть, есть что-то очевидное, что я скучаю, но я не могу понять, что это такое. Я знаю, что число с ведущими нулями рассматривается как восьмеричное число, но я хотел бы знать, могу ли я работать с числом, которое вводится в качестве параметра, когда оно имеет начальные нули (т. Е. Не из переменной, но буквально вводится как параметр функции).
1 ответ
Причина, по которой это происходит, заключается в том, что ведение числа с нулем заставляет javascript интерпретировать число в восьмеричном формате. Вы не можете изменить эту интерпретацию, но если вы получаете значение откуда-то в виде строки, вы можете использовать parseInt(string, 10)
Мы можем сделать это преобразование строк сами, а затем проанализировать его в базе 10 следующим образом:
let number = 0011
console.log(parseInt(number.toString(8),10))
Другая часть вашего вопроса спрашивает, можете ли вы бросить, когда вводится восьмеричное число.
'use strict'
делает только это:
В-шестых, строгий режим в ECMAScript 5 запрещает восьмеричный синтаксис. Восьмеричный синтаксис не является частью ECMAScript 5, но он поддерживается во всех браузерах, добавляя восьмеричное число с нулем:
0644 === 420
а также"\045" === "%"
, В ECMAScript 2015 Октальный номер поддерживается с префиксом числа с"0o"
, т.е.var a = 0o10; // ES2015: Octal
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode