Как удалить начальные нули из числа в параметре функции - PullRequest
0 голосов
/ 30 ноября 2018

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

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

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 Ответ

0 голосов
/ 30 ноября 2018

Причина, по которой это происходит, в том, что ведение числа с нулем заставляет 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

...