Strict mode란

ECMAScript 5에서 처음으로 소개된 strict 모드는 JavaScript 코드에 더욱 엄격한 오류 검사를 적용하여 기존에 무시되던 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다.

ESLint와 같은 린트 도구를 사용하여도 Strict mode와 유사한 효과를 얻을 수 있다. 린트 도구는 정적 분석(static analysis)기능을 통해 소스 코드를 실행하기 전 소스 코드를 스캔하여 문법적 오류 뿐만 아니라 잠재적 오류까지 찾아내고 오류의 이유를 리포팅해주는 유용한 도구이다.  


적용 방법

     1. Script 에서 선언

        스크립트의 시작 혹은 함수의 시작 부분에 "use strict"(또는 'use strict')를 선언한다. 

    'use strict';
    var v = "Hi! I'm a strict mode script!" ;

       전역의 선두에 추가하면 스크립트 전체에 strict mode가 적용된다. 

 

    2. 함수에서 선언

        함수 단위로 strict mode를 적용할 수 있다.

  Function strict() {
    'use strict';
    function nested() { return "And so am I!"; }
    return "Hi! I'm a strict mode function!" + nested();
  }
  function notstrict() { retrun "I'm no strict"; }

       3. 모듈로 선언 

       ECMAScript 2015는 JavaScript 모듈을 소개했다. JavaScript 모듈 전체는 'use strict' 구문 없이도 자동으로 strict mode가 적용된다.

  function strict() {

  }
  export default strict;

   

  하지만 strict mode script 와 non-strict mode script를 혼용해서 사용하는 것은 오류를 발생 시킬 수 있다. 특히 외부 서드 파티 라이브러리를 사용하는 경우, 라이브러리가 non strict mode일 경우도 있기 때문에 전역에 strict mode 를 적용하는 것은 바람직하지 않다. 스크립트에 적용을 해야하는 경우 아래 예처럼, 즉시 실행 함수로 script 전체를 감싸서 스코프를 구분하고 strict mode를 적용하도록 한다. 

  (function () {
     'use strict';
  });