2017-07-19 53 views
-1

我收到eval函数的意外结果。EVAL函数显示意外的结果,如果前置零(0)

alert(eval(1 + 033))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

如果我执行eval(1 + 033)它显示的结果为28

有谁知道为什么会发生这种情况?我怎样才能把它作为33作为033,并产生34

+1

貌似正确的结果给我。 –

+0

@kevin:我可以给你发送截图。它显示28.我还检查了其他机器。要求你分享你的片段。 – sAcH

+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates#Octal_numbers –

回答

2

如果你有一个包含带有前导零的数字的字符串,你想要的号码的八进制表示被视为十进制(base-10),您可以使用parseInt提供10作为第二个参数。

parseInt(string, radix); 

var str = "033"; 
 
var x = parseInt(str, 10); 
 
console.log(x + 1);

2

033是(十进制)27

所以eval(1+033)eval(1+27)eval(28)28

+0

感谢,但最新的解决方案呢? – sAcH

+0

@sAcH取下前导零? – TLS

+1

你有什么问题? – naomik