如何从函数参数中的数字中删除前导零

How to remove leading zeros from a number within a function parameter

我有一个将 number/integer 作为参数的函数,我试图在函数中执行任何其他操作之前从该数字中删除任何可能的前导零。但是,在我可以对函数参数执行某些操作之前,似乎已经以某种方式解析了带有前导零的数字。

到目前为止我试过这个:

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" 函数参数,而是将其保留为数字。

也许我遗漏了一些明显的东西,但我不太清楚它是什么。我 am 知道带前导零的数字被视为八进制数,但我想知道当它具有前导零时我是否可以使用作为参数输入的数字(即它不是来自变量,而是按字面意思作为函数参数输入)。

发生这种情况的原因是因为以零开头的数字会使 javascript 以八进制格式解释数字。您无法更改此解释,但如果您从某处获取字符串形式的值,则可以使用 parseInt(string, 10)

我们可以自己做这个字符串转换,然后像这样以 10 为基数解析它:

let number = 0011
console.log(parseInt(number.toString(8),10))

你的问题的另一部分询问是否可以在输入八进制数时抛出。

'use strict' 就是这样做的:

Sixth, a strict mode in ECMAScript 5 forbids octal syntax. The octal syntax isn't part of ECMAScript 5, but it's supported in all browsers by prefixing the octal number with a zero: 0644 === 420 and "5" === "%". In ECMAScript 2015 Octal number is supported by prefixing a number with "0o". i.e. var a = 0o10; // ES2015: Octal

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode