2013-06-02 12 views
12

Ich habe gerade bemerkt, dass:Warum bekomme ich seltsames Ergebnis mit parseInt in node.js? (Anderes Ergebnis aus Chrom js Konsole)

//IN CHROME JS CONSOLE 
parseInt("03010123"); //prints: 301

//IN NODE.JS 
parseInt("03010123"); //prints: 790611 

Da beide basieren auf V8, warum gleichen Vorgang ergibt unterschiedliche Ergebnisse ???

+1

http://code.google.com/p/v8/issues/detail?id=1645 –

+0

Welche Version von Knoten? Ich kann es nicht reproduzieren. – Blender

+0

@Blender v0.8.18 – renatoargh

Antwort

21

Ein nicht definiertes Verhalten tritt auf, wenn die Zeichenfolge, die an parseInt übergeben wird, eine führende 0 hat und Sie den Radix-Parameter nicht angeben.

Eine Ganzzahl, die die Radix der oben genannten Zeichenfolge darstellt. Geben Sie diesen Parameter immer an, um Verwirrung beim Leser zu vermeiden und vorhersehbares Verhalten zu gewährleisten. Unterschiedliche Implementierungen führen zu unterschiedlichen Ergebnissen, wenn kein Radix angegeben wird.

zu einige Browser Standard 8, zu stützen und einige auf Basis 10. Ich bin nicht sicher, was die Dokumentation über Knoten sagen, aber 8, da 3010123 Basis vorausgesetzt, es ist eindeutig in der Basis 8 ist 790611 in der Basis 10

Sie werden verwenden möchten:

parseInt("03010123", 10); 
+1

das ist es! Vielen Dank. Vielleicht möchten Sie Ihre Antwort verbessern, indem Sie diesen Link als Referenz hinzufügen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – renatoargh

+0

@RenatoGama - fertig - danke. –

+0

können Sie auch Number() als Alternative verwenden. – Kiddo

Verwandte Themen