TIL. SyntaxError: tsx: Legacy octal literals are not allowed in strict mode.

seul3·2022년 4월 13일
0

TIL.Error

목록 보기
2/3
post-thumbnail

1.문제점

아주 정확하기 집어주었다.특정 시간에만 작동하도록 조건문을 작성 중이였는데

정확히 저 00 부분을 집어준다.매우 친절하다 :-) ....

SyntaxError: tsx: Legacy octal literals are not allowed in strict mode.

해석해보면 지금 Legacy octal literals은 엄격모드를 허용하지 않습니다 라고 말해주고 있다.
그래서 이 말이 무슨 말인데??

2.해결 과정

해당 과정은 바로 에러 메세지를 검색했다.
그러니 진수에 관련한 이야기가 나왔다.
즉 보니 이런 에러들은 010과 같은 리터럴을 사용할 때 만날 수 있는 오류라고 한다.

예를 들어,010을 조금 면밀히 보자면 0으로 시작하면 8진수 0x로 시작하면 16진수 표기이다.
ES6 부터는 표기법이 달라졌다고한다.그러나 ES6 모듈을 정의하는 경우 스코프 안에서는 자동 스트릭 모드가 되고 이 스트릭*(엄격) 모드에서는 010과 같은 8진수 표기법을 애매한 표기법으로 규정해서 사용 못한다고 한다.

정답이 나왔다. 이래서 00이 안먹혔던거군 ㅎㅎ...
진수에 대해 블라블라 머리 아프시겠지만 결론적으로 한 스코프 내에서 저렇게 사용해서는 되지 않는다 라는겁니다.


3.해결방법

해결도 결국...

if (hours >= 9 && hours <= 18 && hours === 18 && minutes <= 0o0)

00 이렇게 못 쓰니 0o0 쓰면 됩니다! 다른 여러 방법도 있었지만 전 쉬운게 좋으니....

너무 쉽죠? 덧붙이자면 해당 조건문도
9시부터 18시에만 허용해줍니다~라는 조건문이였는데, 이상하게 흘러가길래
아차 싶어서 얼른 고쳤습니다.

if (hours >= 9 && hours <= 18 && hours === 18 && minutes <= 0o0)

이걸

if ((hours >= 9 && hours <= 18) || (hours === 18 && minutes <= 11))

요로콤 바꾸니 잘 됐습니다.

✍️ ✅

이번 문제도 정말 쉽게 해결했지만, 알면 쉬운 것이지 모르면 세상에서 제일 어려운 문제라고 생각합니다.


참고했던 출처 목록
https://min9nim.github.io/2019/07/octal-literals-strict/

profile
꾸준히 성장하는 개발자 입니다 😊

0개의 댓글