작업 상태

- 알람 설정 작업을 진행하던 중 08:00 값을 설정하던중 발생했습니다.
 
에러 메시지 

error: SyntaxError: C:\Use...ns\Noti.js: Legacy octal literals are not allowed in strict mode. (15:12)

원인

- strict mode에서 코드에 0으로 시작하는 숫자가 있을 때 발생합니다.  이를 수정하면 됩니다. 또는 0o 접두어를 사용하여 8진수를 대신 표현할 수도 있습니다.

 

// 알림을 보냅니다.
const scheduledTime = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(),
     21, 00, 0, 0);


처리

const scheduledTime = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(),
     21, 0, 0, 0);

참고

 

JavaScript strict mode

- 더 엄격한 자바스크립트 문법 검사를 수행하는 모드입니다. 
- 기존 자바스크립트와는 다른 규칙을 따르게 됩니다. 

- 암묵적 전역 변수 금지: strict mode에서는 암묵적으로 선언되는 전역 변수를 사용할 수 없습니다. 변수를 명시적으로 선언하지 않으면 ReferenceError가 발생합니다.

- 읽기 전용 속성 및 변수: strict mode에서는 읽기 전용 속성 및 변수를 수정하려고 하면 TypeError가 발생합니다.

- 함수에서 this 사용 제한: strict mode에서는 함수 안에서 this를 사용할 때, 함수가 호출된 방식에 따라 this가 자동으로 전역 객체를 참조하지 않습니다.

- delete 연산자 사용 제한: strict mode에서는 delete 연산자로 변수, 함수, 매개변수 등을 삭제할 수 없습니다.

- 함수 매개변수 이름 중복 제한: strict mode에서는 함수의 매개변수 이름이 중복될 경우 SyntaxError가 발생합니다.

strict mode는 'use strict' 문을 사용하여 활성화할 수 있습니다. strict mode는 파일 전체에 적용될 수도 있고, 함수 내에서만 적용될 수도 있습니다.

 

// 파일 전체에 strict mode 적용
'use strict';

let x = 10;
delete x; // TypeError 발생

function foo(param1, param1) { // SyntaxError 발생
  // ...
}

// 함수 내에서만 strict mode 적용
function bar() {
  'use strict';

  let y = 20;
  delete y; // TypeError 발생

  // ...
}

+ Recent posts