All Articles

엄격모드(Strict mode)

자바스크립트의 엄격모드(Strict Mode)

  • 'use strict';를 상단에 작성함으로써 엄격모드를 실행할 수 있게 된다. 엄격모드란 무엇일까?
  • ES5가 나온 후 하위 호환성 이슈 때문에 변경사항 대부분이 디폴트로는 활성화되지 않도록 설계되었다. 대신 'use strict'라는 특별한 지시자를 사용했을 때에만 활성화되게 해두면서 엄격모드라는 게 생겼다.
  • 엄격모드를 실행하면 스크립트가 모던한 방식으로 작동하게 된다.

엄격모드의 쓰임새

  • var, let, const를 통해 선언을 하지 않았으나 자바스크립트 엔진이 암묵적으로 전역 객체에 프로퍼티를 동적으로 생성한 경우를 암묵적 전역 변수라 한다. 이는 잠재적인 오류를 발생시킬 수 있는데, 그러한 가능성을 낮추게 하기 위해 strict mode가 유용할 수 있다.
  • strict mode는 자바스크립트 언어의 문법을 보다 엄격히 적용하여 기존에는 무시되던 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다.

엄격모드를 통해 발생시킬 수 있는 명시적 에러

  1. 암묵적 지역 변수
    : 선언하지 않은 변수를 참조하면 ReferenceError가 발생한다.
  2. 변수, 함수, 매개변수의 삭제
    : 삭제하지 못하게 만든다.
  3. 매개변수 이름의 중복
    : 중복된 함수 파라미터 이름을 사용하면 SyntaxError가 발생한다.
  4. with 문의 사용
    : with 문을 사용하면 SyntaxError가 발생한다.
  5. 일반 함수의 this
    : strict mode 에서 함수를 일반 함수로서 호출하면 this에 undefined가 바인딩된다. 생성자 함수가 아닌 일반 함수 내부에서는 this를 사용할 필요가 없기 때문이다. 이때 에러는 발생하지 않는다.

[참고자료]
https://poiemaweb.com/js-strict-mode
https://ko.javascript.info/strict-mode