JavaScript에서 Strict Mode가 필요한 이유 + ESLint와의 차이점

2025. 3. 11. 19:53·FRONTEND/JS

strict mode란

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode

가끔 엄격하지 않은 기본값을 " 느슨한 모드(sloppy mode)"라고 부르기도 한다.  (공식적인 용어는 아니지만 혹시 모르니 알아두면 좋겠다.)

 

strict mode 적용 방법

: 전역 최상단 혹은 함수 내의 최상단에 "use strict;" 추가하기

 

ex) 

// 함수 단위로 strict mode 적용 
function test() { 
	'use strict'; 
    x = 10; // ReferenceError: x is not defined 
}
foo();

 

function test() { 
	x = 10; // 에러 발생 X 
    'use strict'; 
} 
foo();

-> 코드의 상단에 strict mode를 넣지 않으면 제대로 동작 X

 

특징

  • JavaScript 실행 방식 변경 : "use strict";는 개발/배포 환경과 관계없이 항상 적용된다.
    (ES6 모듈과 클래스에서는 기본적으로 strict mode가 활성화됨.)
  • 실행 중 코드 오류를 사전에 방지
    : 암묵적 전역 변수 사용, this의 모호한 동작, with 문 사용 등을 금지하여 예측 가능한 실행을 보장한다.

 

 

예시

x = 10; // ReferenceError: x is not defined
  • 기존 JavaScript에서 암묵적으로 허용되던 위험한 코드 패턴을 차단하고, 예측 가능한 동작을 보장하도록 강제하는 기능을 수행한다.

 

ESLint와 같은 린트 도구 사용 시에도 strict mode와 유사한 효과를 얻을 수 있다.
* 린트 도구 : 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구

 

다시 정리하자면 ESLint는 코드 스타일 및 베스트 프랙티스를 강제하는 정적 분석 도구로,

strict mode처럼 일부 코드 오류를 방지할 수 있지만, 실제 실행 중 오류를 감지하는 기능은 없다는 점 참고 !

 

 

ESLint란

  • 잘못된 코드 스타일 경고
  • 일부 오류의 경우 자동 수정 가능
  • 팀 내 코딩 스타일 통일 및 코드 품질 유지

ex) 

var x = 10; // 'var' 대신 'let' 또는 'const' 사용 권장

 

 

그렇다면, strict mode와 ESLint는 무슨 차이가 있을까 ?

앞서 보여준 예시를 살펴 보자

x = 10; 
console.log(x);

- ESLint에서 에러가 발생하지 않는 경우 존재

 

하지만 "no-undef"(정의되지 않은 변수 사용 금지) 규칙을 활성화하면 오류 발생

 

즉, ESLint의 no-undef를 활성화하면 strict mode 없이도 x = 10;을 막을 수 있다.

그렇지만 ESLint는 실행 전에 정적 분석을 하는 도구라서 strict mode처럼 실제 실행 중 오류를 발생시키지는 않는다.

 

따라서, 안전성을 위해 "use strict";와 함께 사용하는 게 좋다 !

'FRONTEND > JS' 카테고리의 다른 글

클로저 완전 정복 - 기초 개념부터 동작 원리까지  (3) 2025.08.11
[JS] globalThis의 필요성과 등장 배경  (1) 2025.03.28
[JS] 배열(Array)과 Set의 차이  (0) 2025.03.23
자바스크립트에서의 Garbage Collection  (0) 2025.03.16
'FRONTEND/JS' 카테고리의 다른 글
  • 클로저 완전 정복 - 기초 개념부터 동작 원리까지
  • [JS] globalThis의 필요성과 등장 배경
  • [JS] 배열(Array)과 Set의 차이
  • 자바스크립트에서의 Garbage Collection
uoaheu
uoaheu
uoaheu 님의 블로그 입니다.
  • uoaheu
    uoaheu 님의 블로그
    uoaheu
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • 알고리즘 (7)
      • CS (9)
      • FRONTEND (9)
        • React (12)
        • Kotlin (1)
        • JS (5)
        • HTML (2)
      • SQL (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    멀티캠퍼스it부트캠프
    백준1926번
    mysql 피벗테이블
    toss uiux
    토스 uiux
    boj25418
    엘지유플러스유레카프론트엔드
    알고리즘
    BFS
    mysql
    유레카3기
    부트캠프후기
    토스 앱 분석
    mysql로 피벗테이블만들기
    이더넷프레임
    useactionstate
    혼자서 공부하는 네트워크
    토스분석
    리액트usestate
    toss 분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
uoaheu
JavaScript에서 Strict Mode가 필요한 이유 + ESLint와의 차이점
상단으로

티스토리툴바