본문 바로가기

학습 내용 정리/javascript

javascript 에서의 8진수 표현법

728x90

문제

birthday 라는 변수에 타입을 지정하지 않고 0717을 할당하면 463로 출력이 됨.

나의 의도 : 0717을 출력

 

시도 

시도 1. 내가 입력한 값의 타입을 몰라서 javascript 가 알아서 아스키코드로 해석해서 덧셈하고 있는 것은 아닐까?

 

0+7+1+7 을 아스키 코드로 해석 시

: 33 + 40 + 34 + 40 = 147 

 

아스키 코드표 : https://ko.wikipedia.org/wiki/ASCII 

 

시도 2. GPT에게 힌트를 얻자. 컴퓨터 숫자는 컴퓨터가 잘 알 것 같다.

js 이 친구.... 상당히 간단하면서도 좋은 체계를 갖고 있는데 나만 몰랐군.

 

해결

javascript에서 0으로 시작하는 숫자는 8진수로 인식한다.

구조분해할당 뿐만 아니라 모든 것에서 해당되나, use strict 모드에서는 사용할 수 없다.

 

알게 된 점

튜터 님이 이해를 돕기 위한 자료를 보내 주심!! (감사합니다 ㅜ ㅜ)

javascript에서

'0'으로 시작하는 정수형은 8진수로 인식
'0x'로 시작하는 정수형은 16진수로 인식

"use strict" 모드를 사용하면 8진수를 사용할수 없습니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Grammar_and_types

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal

 

"use strict" 모드에서의 예시 (튜터님 제공)