[英]How to remove leading zeros from a number within a function parameter
我有一个将数字/整数作为参数的函数,并且在执行该函数中的任何其他操作之前,我试图从该数字中删除任何可能的前导零。 但是,在我可以对function参数执行某些操作之前,似乎已经以某种方式解析了带有前导零的数字。
到目前为止,我已经尝试过了:
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”函数参数替换为字符串,而是将其保留为数字。
也许我很想念某些东西,但是我无法弄清楚它到底是什么。 据我所知,有前导零的数被视为一个八进制数,但我想知道如果我可以当它已经领先的零输入为参数的数字工作(即它不是来自一个变量,但实际上是作为函数参数输入的)。
发生这种情况的原因是,以零开头的数字会使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
var a = 0o10; // ES2015: Octal
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.