Javascript,为什么被视为八进制

Javascript,为什么被视为八进制,javascript,Javascript,我将一个id作为参数传递给一个javascript函数,因为它来自UI,它是零填充的。但它似乎有(也许)“奇怪”的行为 console.log(0000020948); //20948 console.log(0000022115); //9293 which is 22115's octal console.log(parseInt(0000022115, 10)); // 9293 which is 22115's octal console.log

我将一个id作为参数传递给一个javascript函数,因为它来自UI,它是零填充的。但它似乎有(也许)“奇怪”的行为

    console.log(0000020948);  //20948
    console.log(0000022115);   //9293 which is 22115's octal 
    console.log(parseInt(0000022115, 10));  // 9293 which is 22115's octal
    console.log(0000033959);  //33959
    console.log(20948);  //20948
    console.log(22115); //22115
    console.log(33959); //33959
我如何确保它们正在解析到正确的numebr?(十进制)

编辑:

说清楚一点:

这些数字来自服务器,是零填充字符串。我为每一个都做了一个删除按钮

比如:

function printDelButton(value){
          console.log(typeof value);  //output string 
  return '<a href="#" onclick="deleteme('+value+')"><img src="images/del.png"></a>'
}

and 

function printDelButton(value){
console.log(typeof value); //output numeric
    console.log(value);   //here output as octal .... :S
 }

仍然解析为八进制

如果以0开头,它将被解释为八进制数

请注意本文的警告:

你永远不应该在数字前面加零,除非你是 特别是寻找一个八进制转换

考虑在此处查找有关移除导线的想法:

前导
0
s表示数字为八进制

parseInt
解析包含数字的字符串。

parseInt(0000022115,10)
传递一个数字文本。JS解释器以八进制解析文本,因此您将原始数值传递给
parseInt

,除非您可以截取此数字的字符串版本,否则您就倒霉了

这就是说,如果您可以获得八进制的字符串版本(调用
toString()
将无济于事),这将起作用:

parseInt(variable_string.replace(/^0+/, ''), 10);
试一试


这应该只给你去除零的数字(如果你必须支持小数,你需要编辑以解释“.”,当然,“.”也很有趣……我真的希望你不必处理欧洲人写数字的各种疯狂方式!)

如果你将参数作为字符串对象接收,它应该可以使用

 parseInt(string, 10)
将字符串解释为十进制,即使它们以0开头

在测试中,您向parseInt方法传递了一个数字,而不是一个字符串,这可能就是它不返回预期结果的原因

试一试

而不是

parseInt(0000022115, 10)

这对我来说确实返回了221115。

如果数字是以零填充字符串的形式来自服务器,则使用
+“0000022115”

console.log(+“0000022115”)

if(021<019)console.log('Paradox')
不要用零填充数字,而要用空格。为什么用户界面用0填充数字?在脚本中使用
“use strict”
指令可能是个好主意。这将导致任何八进制文字的使用都会抛出错误,这将使调试更容易!关于
parseInt(00000221115,10)
:您仍在传递一个数字作为第一个参数,这使得JavaScript首先转换该数字,然后将其传递给
parseInt
。而是传递一个字符串。如果要从
创建新元素,则否;只需使用
parseInt(str,10)
parseFloat
。问题是他有一个字面意思。我更新了这个问题。它们是来自服务器的零填充字符串。@Kossel-所以在JavaScript中删除字符串中的零。
 parseInt(string, 10)
 parseInt('0000022115', 10)
parseInt(0000022115, 10)