0

2 + 10 = 122 + 010 = 10? 나는 구글 크롬 v 51.0IE 8 콘솔에서 이것을 시도했지만 같은 결과가 나타납니다. 어쩌면 이것은 자바 스크립트의 기능입니다.
누군가가 나를 배후에 논리를 이해하고 도움이 될 수있는 좋은 가능한 도와 주시겠습니까?Wierd 자바 스크립트 추가 동작

+0

''use strict''에 적합하다. 그렇지 않으면 숫자 앞의'0'은 8 진수가된다. – elclanrs

+0

답변 : http://stackoverflow.com/questions/6718102/in-javascript-eval010-returns-8 – sohel101091

답변

2

언젠가는 자바 스크립트를 취급 번호 해석하다.

이 경우 JavaScript는 숫자를 해석합니다.

리딩 제로는

수가 진수임을 의미한다 -베이스 - 8의 숫자 0, 1, 2, 3, 4, 5, 6, 7

그래서 .. 010 (진수) 갈 당신은 외부 소스에서 숫자를 처리하는 경우 parseInt

2 + parseInt("010", 10); 

주를 사용할 수 있습니다

2 + 010 
2 + 8 
10 

== 8 (진수) 다음 ,10는 다음과 같이 번역 될 그 번호를 강제하는 것도 중요하다 기초 10. ES3에서 브라우저에 따라 다른 결과를 얻을 수 있습니다.

2

0 숫자 앞에는 자바 스크립트에서 숫자를 8 진수로 해석합니다. 따라서 8 진수의 10은 십진수로 8을 의미하고 8 + 210입니다.

2

0으로 시작하는 숫자는 8 진수로 간주됩니다. 그래서 010은 8로 해석되므로 2 + 010의 합으로 10이됩니다. 이것은 파이썬에서도 발생합니다. 당신이 '에 시도, 다른 시간을 지정으로

1

10은 8 진수로 8과 같으며 첫 번째 0은 javascript에이를 8 진수로 해석하도록 지시합니다. 따라서 2 + 010이 실행될 때, 처음에 0108으로 변환 된 다음 2에 추가되어 10이됩니다.