Как убрать начальные нули из числа в параметре функции

У меня есть функция, которая принимает число / целое число в качестве параметра, и я пытаюсь удалить любые возможные начальные нули из этого числа, прежде чем делать что-либо еще в функции. Однако числа с ведущими нулями, кажется, анализируются каким-то образом уже до того, как я смогу что-то сделать с параметром функции.

Пока я попробовал это:

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

Другие вопросы по тегам