JS/Javascript

[javascript] 엄격 모드 - use strict

ui-o 2025. 7. 30. 16:50
반응형

엄격 모드

  • 정의 : "use strict" 지시어를 사용하여 코드 실행을 더 엄격하게 만드는 자바스크립트 기능
  • 실수를 더 빠르게 잡아냄
  • 구문 오류를 강하게 체크
  • 암묵적인 동작 금지 → 개발자가 의도하지 않은 버그 예방

엄격모드 사용 방법

  • "use strict"는 반드시 파일 또는 함수의 맨 앞에 와야 함!

전체 스크립트에 적용

"use strict";

x = 10; // ❌ ReferenceError: x is not defined

함수 단위로 적용

function myFunc() {
  "use strict";
  y = 5; // ❌ ReferenceError: y is not defined
}

엄격 모드에서 달라지는 주요 동작 비교

상황 느슨한 모드(기본) 엄격 모드
선언 없이 변수 사용 x = 3 가능 ❌ ReferenceError
읽기 전용 속성 변경 무시됨 ❌ TypeError
삭제 불가능한 속성 삭제 실패하지만 오류 없음 ❌ TypeError
this가 undefined일 때 this가 전역 객체 ❌ undefined (안전)
중복 매개변수 허용 허용됨 ❌ SyntaxError
예약어 사용 가능 ❌ 오류 발생

느슨한 모드

function loose() {
  x = 10; // 오류 없음 (전역 변수로 만들어짐 — 위험!)
  console.log(x);
}
loose(); // 10

엄격 모드

function strict() {
  "use strict";
  x = 10; // ❌ ReferenceError
}
strict();
반응형