2013-06-02 15 views
12

Właśnie zauważyłem, że:Dlaczego otrzymuję dziwne wyniki za pomocą parseInt w pliku node.js? (Inny wynik z konsoli chrom js)

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

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

Ponieważ oba są oparte na V8, dlaczego sama operacja uzyskując różne wyniki ???

+1

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

+0

jaka wersja węzła? Nie mogę tego odtworzyć. – Blender

+0

@Blender v0.8.18 – renatoargh

Odpowiedz

21

Niezdefiniowane zachowanie występuje wtedy, gdy ciąg przekazywany do parseInt ma wiodącą wartość 0, a parametr parametru podstawiania jest wyłączony.

Liczba całkowita reprezentująca podstawę powyższego ciągu. Zawsze określaj ten parametr, aby wyeliminować błąd czytelnika i zagwarantować przewidywalne zachowanie. Różne implementacje dają różne wyniki, gdy podstawa nie jest określona.

Niektóre domyślnej przeglądarki do podstawy 8, a niektóre do podstawy 10. Nie jestem pewien, co docs powiedzieć o węźle, ale wyraźnie to zakładając podstawy 8, ponieważ 3010123 w bazie 8 jest 790611 w bazie 10.

będziemy chcieli użyć:

parseInt("03010123", 10); 
+1

to wszystko! dzięki. możesz poprawić swoją odpowiedź, dodając ten link jako referencję: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – renatoargh

+0

@RenatoGama - gotowe - dzięki. –

+0

możesz także użyć Number() jako alternatywy. – Kiddo

Powiązane problemy