2013-06-02 3 views
12

(크롬 JS 콘솔 상이한 결과) : 모두 이후node.js에서 parseInt를 사용하여 이상한 결과가 나타나는 이유는 무엇입니까? 그냥 눈치

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

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

V8을 기반으로, 왜 동일한 동작 다른 결과를 얻었다 ???

+1

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

+0

버전은 무엇? 나는 그것을 재현 할 수 없다. – Blender

+0

@Blender v0.8.18 – renatoargh

답변

21

parseInt에 전달되는 문자열에 선행 0이 있고 radix 매개 변수를 생략하면 정의되지 않은 동작이 발생합니다.

위에서 언급 한 문자열의 기수를 나타내는 정수입니다. 판독기 혼동을 제거하고 예측 가능한 동작을 보장하려면 항상이 매개 변수를 지정하십시오. 기수가 지정되어 있지 않은 경우, 구현마다 다른 결과가 생성됩니다.

일부 브라우저의 기본값은 8을 기반으로하고,베이스 (10)에 일부는 내가 워드 프로세서 노드에 대해 말을 잘 모르겠지만, 분명히이 기본 8 3010123 이후 기본 8, 가정이야하는베이스 (10)

에서 790611입니다

당신은 사용할 수 있습니다 : 노드의

parseInt("03010123", 10); 
+1

그게 다야! 감사. 이 링크를 참조로 추가하여 답변을 개선하고 싶을 수도 있습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – renatoargh

+0

@RenatoGama - done - thanks. –

+0

Number()를 대안으로 사용할 수도 있습니다. – Kiddo

관련 문제