JavaScript 기본 | 문법 | use strict

Faithful Dev·2025년 5월 19일

프리스쿨

목록 보기
19/25

자바스크립트에서 "use strict"코드 실행 방식에 영향을 주는 특별한 지시문(directive)이다. 오류를 더 엄격하게 감지하고, 일부 잠재적인 버그를 방지하기 위한 안전 장치 역할을 한다.


"use strict"란?

"use strict"는 자바스크립트에서 Strict Mode(엄격 모드)를 활성화하는 지시문이다. 이 모드를 사용하면 보다 안전하고 예측 가능한 코드 실행이 보장된다.

"use strict"; // 이 줄 이후부터 엄격 모드 적용

let x = 3.14;

문법

  • 문자열 "use strict" 또는 'use strict'로 명시
  • 스크립트 또는 함수의 첫 줄에 위치해야 작동함

왜 사용하는가?

자바스크립트는 초기 설계 시 유연함과 관용성(forgiveness)을 강조했기 때문에, 실수를 해도 경고 없이 넘어가는 경우가 많다.
Strict Mode는 이런 관용적인 동작을 제한하고 오류를 강제로 발생시켜 개발자가 문제를 빨리 인지하도록 도와준다.


엄격 모드의 주요 특징

암시적 전역 변수 금지

"use strict";
x = 10; // ❌ ReferenceError: x is not defined

→ 선언하지 않은 변수는 자동으로 var로 처리되지 않고 에러 발생.


읽기 전용 속성 변경 금지

"use strict";
const obj = {};
Object.defineProperty(obj, "x", { value: 42, writable: false });

obj.x = 9; // ❌ TypeError: Cannot assign to read only property

중복된 매개변수 이름 허용 안 함

"use strict";
function sum(a, a, b) { // ❌ SyntaxError
  return a + b;
}

this가 undefined로 유지됨 (전역 객체 바인딩 금지)

"use strict";
function f() {
  console.log(this); // ✅ undefined
}
f();

→ 엄격 모드에서는 this가 자동으로 window(또는 global 객체)로 바인딩되지 않음.


삭제 불가능한 값 삭제 시 에러 발생

"use strict";
delete Object.prototype; // ❌ TypeError

예약어 사용 제한

아직 사용되지 않았지만 미래에 사용할 가능성이 있는 키워드는 사용할 수 없습니다.

"use strict";
let public = 1; // ❌ SyntaxError

어디에 쓰나?

파일 전체에 적용

"use strict";

function doSomething() {
  // strict mode 적용됨
}

특정 함수에만 적용

function processData() {
  "use strict";
  // 이 함수 내부만 strict mode 적용
}

사용 시 주의사항

  • 최상단에 선언해야 함 (주석보다 먼저 위치하는 것이 안전)
  • 라이브러리와 혼합 시 부분 적용 권장 (함수 단위로)

ES6 이후의 맥락

ES6부터는 모듈(.mjs)이나 클래스 내 코드는 자동으로 strict mode가 적용된다.
즉, 명시적으로 쓰지 않아도 엄격 모드가 기본이라는 점도 기억해두자!


정리

항목엄격 모드 적용 결과
선언 없는 변수 사용에러 발생
중복된 매개변수에러 발생
this의 암시적 전역 바인딩undefined 유지 (window에 바인딩 안 됨)
예약어 사용금지됨
상수 변경/삭제에러 발생
profile
Turning Vision into Reality.

0개의 댓글