본문 바로가기
👩🏻‍💻 Front-end/🌐 Web

[JavaScript] Strict Mode 엄격 모드

by su-no 2022. 10. 27.

Use Strict

use strict 지시자를 사용하면, ECMAScript5(ES5) 이후 추가된 새로운 기능과 변경사항이 활성화 된다.

등장 배경

자바스크립트는 다양한 브라우저에서 작동해야 하기 때문에 기존의 기능을 변경하지 않고 새로운 기능을 추가하며 호환성을 유지해왔다.

덕분에 옛날에 작성된 코드를 지금도 사용할 수 있다는 장점이 있지만, 업데이트 전 코드의 결함이 그대로 박제된다는 단점이 있다.

ES5 이후에는 새로운 기능을 추가하면서 기존 기능 일부를 변경했기 때문에 하위 호환성 문제가 발생할 수 있다.

따라서 느슨한 모드(sloppy mode)를 기본으로 하되, use strict 지시자를 사용한 엄격 모드(strict mode)에서만 변경사항이 활성화되게 했다.

Strict Mode가 에러처리 하는 것

  1. 암묵적 전역 변수 (var 생략)
  2. 변수, 함수, 매개변수의 삭제 (delete)
  3. 매개변수 이름의 중복
  4. 일반 함수의 this (undefined)

사용 방법

  • 전역, 블럭, 함수 스코프 내에서 사용할 수 있다.
  • 모던 자바스크립트에서는 Class Module을 사용한다면, 자동으로 use strict가 적용 된다.
  • 리액트 등 프레임워크는 기본적으로 strict mode로 동작한다.
  • 일부 라이브러리, 프레임워크는 sloppy mode로 작성되어 strict mode에서 에러가 발생할 수 있으니 확인해야 한다.

Reference
https://ko.javascript.info/strict-mode
https://poiemaweb.com/js-strict-mode
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode