본문 바로가기

Error log

[JavaScript] Legacy octal literals are not allowed in strict mode Error

반응형

시도했던 것들

서버에서 contribution status code(사용자가 기고한 글의 상태를 나타내는 code)를 받아 이에 알맞은 메세지를 render하기 위하여 아래와 같은 함수를 작성하였으나,

export  function  statuscodeconvert(code) {
console.log(typeof  code);
const  status = {
00:  '게시 승인 대기',
01:  '수정 승인 대기',
02:  '삭제 승인 대기',
10:  '게시 승인 완료',
11:  '수정 승인 완료',
12:  '삭제 승인 완료',
20:  '게시 승인 거부',
21:  '수정 승인 거부',
22:  '삭제 승인 거부',
30:  '기타',
};

return  status\[code\];
}

터미널에서 이러한 오류를 만나게 되었다.

SyntaxError: /home/park/코드스테이츠/DEVzine-port/client/src/utils/statuscodeconvert.js: Legacy octal literals are not allowed in strict mode. (4:4)

JS에서는 정수 리터럴에서 0으로 시작할 경우 8진수임을 나타낸다.

정수 리터럴에서 선행 0(zero)이나 선행 0o(혹은 0O)은 8진수임을 나타냅니다.
8진 정수는 오직 숫자 0-7만 포함할 수 있습니다. (출처 : mdn)

8진 literal은 더이상 사용하지 않으므로 use strict모드 에서는 syntax error를 날리는데

숫자 0뒤에 영어 소문자 o를 넣음으로 8진수를 사용할 수 있다.

내가 짠 코드가 8진수라는 것도 몰랐고 사용하고자하는 생각도 없었지만 지금과 같은 형태를 사용하고자한다면 백엔드분들과 한번 얘기를 나누어보아야 할 것 같다.

아래는 use strict에서 8진 리터럴이 더이상 사용하지 못함을 실험하기 위한 코드 이다.

(() => {
'use strict';
console.log(010);
})();

//Uncaught SyntaxError: Octal literals are not allowed in strict mode.
(() => {
console.log(010);
})();
//8

오류해결에 참고한 링크

 

 

반응형