[Javascript] 엄격 모드(strict mode)에 대해 알아보자

kaya·2023년 11월 21일

Javascript

목록 보기
4/13

strict mode란?

말 그대로 더 엄격한 모드 ; 일반 모드에서는 보지 않았던 것들을 면밀히 살핀다

목적

  1. 자바스크립트의 결함을 수정
  2. 에러를 더 강력하게 체크
  3. 보안 강화

엄격 모드를 적용하는 법

  • 적용하고자 하는 스코프에 "use strict" 구문을 쓰면 된다
// 전체 스크립트에 적용
"use strict"
let v = 1;
// 특정 함수에서만 적용
function strict() {
	"use strict"
  	function func1 () {...}
}

적용하면 생기는 변화

대략 이런 변화가 생깁니다

  1. 기존에 조용히 무시되던 에러들을 throwing해준다
  • 에러를 던져주면 어느 부분에서 어떤 에러가 발생했는 지 알 수 있어서 트러블슈팅에 좋다
  1. JS엔진의 최적화 작업을 어렵게 하는 실수들을 바로잡는다
  2. JS의 이후 버전에서 정의될 문법을 금지한다

더 자세하게

  1. 반드시 모든 변수를 선언해야 한다
    ➡️ 선언되지 않은 변수에 할당하려 하면 ReferenceError 발생
  2. 메서드가 아닌 함수로 호출된 함수의 this는 전역 객체가 아니라 undefined
    • 함수를 call(), apply()로 호출하면 각 메서드의 1번째 인자가 this의 값이 됨
  3. 읽기 전용 프로퍼티에 할당하려 하거나, 확장 불가한 객체에 새 프로퍼티를 생성하려 하면 TypeError 발생
// 확장 불가 객체에 새 프로퍼티 할당
var fixed = {};
Object.preventExtensions(fixed);  // fixed를 확장 불가 객체로 만듦
fixed.newProp = "ohai"; // TypeError 발생
  1. 변경 불가인 프로퍼티를 삭제하려 하면 TypeError 발생
  2. 객체 리터럴을 써서 두 개 이상의 프로퍼티를 같은 이름을 정의하려고 하면 SyntaxError 발생

cf) JS 엄격 모드와 Typescript의 차이점


참고 자료

  • 엄격 모드 - MDN
  • 자바스크립트 완벽 가이드/ 데이비드 플래네건 지음/ 한빛미디어, O'REILLY
profile
🏟 튼튼한 성은 튼튼한 벽돌로부터

0개의 댓글