문제
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" 모드에서의 예시 (튜터님 제공)
'학습 내용 정리 > javascript' 카테고리의 다른 글
javascript 문자열의 인덱스 찾기 (2) | 2023.06.09 |
---|---|
함수를 반환하는 함수 (0) | 2023.05.23 |
javascript 문법 총정리 (0) | 2023.05.22 |
javascript 6. 객체 순회 , 객체 분해 , 배열 분해 (1) | 2023.05.03 |
javascript 5. 객체 (1) | 2023.05.03 |