2017-07-19 2 views
-1

Ich erhalte ein unerwartetes Ergebnis von der eval-Funktion.EVAL-Funktion zeigt unerwartetes Ergebnis, wenn Null (0) vorangestellt wird

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

Wenn ich ausführen eval(1 + 033) es das Ergebnis als 28 zeigt.

Weiß jemand, warum das passiert? Wie kann ich es erhalten, 033 als die Zahl 33 zu behandeln und 34 als Ergebnis zu produzieren?

+1

Sieht aus wie das richtige Ergebnis für mich. –

+0

@kevin: Darf ich Ihnen den Screenshot schicken? Es zeigt 28. Ich habe auch andere Maschinen eingecheckt. Fordern Sie das Teilen Ihres Snippets an. – sAcH

+1

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

Antwort

2

Wenn Sie eine Zeichenfolge, die eine Zahl mit einer führenden Null haben, und Sie wollen diese Zahl zu Als Dezimalzahl (Basis-10) behandelt werden, können Sie parseInt als zweiten Parameter 10 verwenden.

parseInt(string, radix); 

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

2

033 ist die Oktal Darstellung (dezimal) 27

so eval(1+033) ist eval(1+27) ist eval(28) ist 28

+0

Danke, aber was ist die Lösung dafür? – sAcH

+0

@sAcH Die führende Null entfernen? – TLS

+1

Was ist das Problem, das Sie haben? – naomik