본문 바로가기
웹 개발 (Frontend Developer)/JavaScript

Strict Mode (엄격 모드)

by Jackykim 2024. 11. 7.

<엄격 모드란?>

Strict mode는 JavaScript에 ECMAScript 5에서 도입된 기능으로, 더 엄격한 규칙을 적용하여 코드를 작성할 수 있게 합니다. 엄격 모드는 더 엄격한 구문 해석과 오류 처리를 적용하여 코드가 더욱 안전하게 실행되도록 합니다.
엄격 모드에서는 선언되지 않은 변수 사용이 금지되며, 이 외에도 여러 규칙이 강제됩니다.

 

일반 JavaScript에서는 쓰기 불가능한 속성에 값을 할당하더라도 오류 메시지를 받지 않습니다.

하지만 **엄격 모드(strict mode)**에서는 다음과 같은 경우 오류가 발생합니다:

  • 쓰기 불가능한 속성에 값 할당
  • **읽기 전용 속성(getter-only property)**에 값 할당
  • 존재하지 않는 속성, 변수, 객체에 값 할당

이러한 제한 덕분에 엄격 모드는 잘못된 할당을 방지하고 코드를 보다 안전하게 유지할 수 있도록 돕습니다.

 

<엄격 모드의 장점>

  • 조용한 오류 제거: 조용히 지나가는 오류를 예외 처리로 변환하여 디버깅을 용이하게 합니다.
  • 최적화: JavaScript 엔진의 최적화를 지원해 엄격 모드의 코드가 비엄격 모드보다 빠르게 실행될 가능성이 있습니다.
  • 미래 호환성(Future-Proofing): 향후 ECMAScript 버전에서 정의될 가능성이 있는 구문을 금지하여 코드의 호환성을 높입니다.
  • 안전하지 않은 작업 방지: 글로벌 객체 접근과 같은 안전하지 않은 작업에 오류를 발생시킵니다.

<엄격 모드 사용 방법>

두 가지 방식으로 엄격 모드 활성화할 수 있습니다. 

  1. 전체 파일에 적용: 일 맨 위에 "use strict";를 추가하면 파일 전체에 엄격 모드가 적용됩니다.
    "use strict";
    let x = 3.14; 
  2. 함수 내부에 적용: 특정 함수의 첫 줄에 "use strict";를 추가하여, 해당 함수의 스코프에서만 엄격 모드를 활성화할 수 있습니다.
    function myFunction() {
        "use strict";
        let y = 3.14;

<엄격 모드에서는 다음과 같은 동작이 허용되지 않습니다>

  • 변수를 선언 없이 사용: 변수를 선언하지 않고 사용하는 것이 금지됩니다.
  • 객체를 선언 없이 사용: 선언되지 않은 객체를 사용하는 것이 금지됩니다.
  • 변수(또는 객체) 삭제: 변수나 객체를 삭제할 수 없습니다.
  • 함수 삭제: 함수를 삭제할 수 없습니다.
  • 중복된 매개변수 이름 사용: 함수의 매개변수 이름이 중복되면 오류가 발생합니다.
  • 8진수 리터럴: 8진수 리터럴 사용이 금지됩니다.
  • 8진수 이스케이프 문자: 8진수 이스케이프 문자 사용이 금지됩니다.
  • 읽기 전용 속성에 값 할당: 읽기 전용 속성에 값을 할당할 수 없습니다.
  • 읽기 전용 접근자 속성에 값 할당: get 접근자만 있는 속성에 값을 할당할 수 없습니다.
  • 삭제 불가능한 속성 삭제: 삭제할 수 없는 속성 삭제가 금지됩니다.
  • eval을 변수명으로 사용: eval을 변수 이름으로 사용할 수 없습니다.
  • arguments를 변수명으로 사용: arguments를 변수 이름으로 사용할 수 없습니다.
  • with 문 사용: with 문을 사용할 수 없습니다.

참고 자료 :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode

 

Strict mode - JavaScript | MDN

JavaScript's strict mode is a way to opt in to a restricted variant of JavaScript, thereby implicitly opting-out of "sloppy mode". Strict mode isn't just a subset: it intentionally has different semantics from normal code. Browsers not supporting strict mo

developer.mozilla.org

https://www.w3schools.com/js/js_strict.asp

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

https://www.freecodecamp.org/news/how-to-use-strict-mode-in-javascript/

 

What is Strict Mode in JavaScript? Explained with Examples

By Benjamin Semah If you are a JavaScript developer, you may come across the string "use strict" at the top of your JavaScript code. This means that JavaScript's strict mode is in use. But what does this mean, and why does it matter? In this article,...

www.freecodecamp.org

https://www.geeksforgeeks.org/use-strict-in-javascript/

 

Strict mode in JavaScript - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org