Strict Mode(엄격 모드)

Lucid·2021년 3월 31일
1

typescript로 코딩테스트 문제를 ide에서 풀고 그 ts 파일을 js로 바꿔서 코딩테스트 사이트에 붙여넣기 하는 방식으로 문제를 풀고 있다.
그러던 와중 변환된 js 파일의 최상단에 "use strict"; 라는 문구가 있었다.
뭔지 몰라서 그냥 매번 지워서 제출을 하는데 무슨 내용인지 궁금해졌다.

엄격모드란?

엄격모드란 ES5 이전에 암묵적으로 비엄격모드에서 작동되었던 모든 것들을 제한하는 것이다.

a = 1;

위와 같이 변수를 초기화하게 된다면 상식적으로 Error가 발생해야 한다.
하지만 "use strict";를 사용하지 않고 작성하게 된다면 오류가 발생하지 않고 실행이 된다.
이러한 것들을 방지하기 위해 ES5부터 "use strict"를 이용하여 엄격모드를 적용할 수 있다.

엄격 모드의 장점

  • 기존의 무시되던 에러를 Throwing 한다.
  • Javascript 엔진의 최적화 작업을 어렵게 만드는 실수를 줄어들게 한다.
  • ECMAScript의 차기 버전들에서 정의 도리 문법을 금지합니다. ???

Strict Mode 적용

엄격 모드는 전체 스크립트나 함수에 적용이 가능하다. 단, {} 괄호로 묶여진 블럭문에는 적용되지 않으며, 컨텍스트와 같은곳에 적용을 시도하면 동작하지 않습니다.

전체 스크립트에 Strict Mode 적용

// 전체 스크립트 Strict Mode 구문
'use strict';
const v = "Hi!  I'm a strict mode script!";

주의사항 : strict mode와 none(?) strict mode를 연결시에는 심사숙고 하자.

함수에 Strict Mode 적용

function strict() {
  // 함수-레벨 strict mode 문법
  'use strict';
  function nested() { return "And so am I!"; }
  return "Hi!  I'm a strict mode function!  " + nested();
}
function notStrict() { return "I'm not strict."; }

모듈에 Strict Mode 적용

js 모듈은 use strict 구문 없이도 자동으로 strict mode이다.


참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode
https://webaura.tistory.com/entry/JavaScript-공부하기-02-엄격모드-변수-use-strict-variable

profile
Find The Best Solution 😎

2개의 댓글

comment-user-thumbnail
2021년 9월 8일

안녕하세요:) 출처를 남겨준 webaura 블로그 관리자 nGyu 입니다! 아직 부족한 저의 글을 읽어주셔서 정말 감사합니다 :)

1개의 답글