Javascript,为什么被视为八进制

Yic*_*aoz 4 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(0000033959);  //33959
    console.log(20948);  //20948
    console.log(22115); //22115
    console.log(33959); //33959
Run Code Online (Sandbox Code Playgroud)

我怎样才能确保它们解析到正确的数字呢?(十进制)

编辑:

只是让它更清楚:

这些数字来自服务器并且是零填充字符串.我正在为每个人制作一个删除按钮.

喜欢:

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
 }
Run Code Online (Sandbox Code Playgroud)

我尝试过:__CODE__仍然解析为Octal

Jan*_*Jan 5

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

 parseInt(string, 10)
Run Code Online (Sandbox Code Playgroud)

将字符串解释为十进制,即使它们以0开头.

在你的测试中,你传递parseInt方法一个数字,而不是一个字符串,也许这就是它没有返回预期结果的原因.

尝试

 parseInt('0000022115', 10)
Run Code Online (Sandbox Code Playgroud)

代替

parseInt(0000022115, 10)
Run Code Online (Sandbox Code Playgroud)

这确实为我返回221115.