본문 바로가기

바닐라 코드/Java Script

4. use strict

엄격 모드(Strict Mode)


1. 자바스크립트와 자유도

  • 자바스크립트는 유연하고 자유도가 높은 언어다.
  • 하지만, 초기 자바스크립트에는 애매한 문법이 존재했다.
  • 이런 문법은 작은 스크립트에서는 문제가 없지만, 복잡한 프로그램에서는 에러의 원인이 될 수 있다.

2. 엄격 모드란?

  • 엄격 모드(Strict Mode)는 자바스크립트의 애매한 문법 사용을 제한하는 기능이다.
  • 이 모드를 사용하면 더 안전하고 명확한 코드를 작성할 수 있다.
  • 활성화 방법: 파일 최상단에 "use strict";를 추가한다.
"use strict"; // 엄격 모드 활성화

let x = 10; // 정상 작동
undeclaredVariable = 20; // 에러 발생: 선언하지 않은 변수

3. 엄격 모드 활성화의 장점

  1. 안전한 코드 작성
    • 잘못된 코드가 실행되지 않도록 방지한다.
    • 예: 선언되지 않은 변수를 사용하는 실수를 에러로 처리.
  2. 에러 방지
    • 기존 자바스크립트의 애매한 문법 요소를 사용할 경우 에러를 던진다.
    • 예: 읽기 전용 속성에 값을 할당하려 할 때.
  3. 코드 최적화
    • 자바스크립트 엔진이 엄격 모드로 작성된 코드를 더 효율적으로 최적화한다.
    • 이는 실행 속도를 개선한다.

4. 엄격 모드 활성화의 단점

  1. 새로운 에러 발생
    • 이전에는 발생하지 않던 오류가 발생할 수 있다.
    • 예: 선언하지 않은 변수를 사용할 때.
    "use strict";
    undeclaredVariable = 10; // 에러 발생: 선언되지 않은 변수
  2. 예약어 사용 제한
    • 미래 버전에 추가될 가능성이 있는 예약어를 사용할 수 없다.
    • 예: public, private와 같은 키워드.
    "use strict";
    let public = "value"; // 에러 발생: 예약어 사용 금지

5. 실무에서 엄격 모드 활용

  1. 모듈(Module)
    • ES6 모듈에서는 기본적으로 엄격 모드가 활성화된다. 별도로 추가하지 않아도 된다.
    // ES6 모듈은 엄격 모드가 기본 적용됨
    export function greet(name) {
        return `Hello, ${name}`;
    }
  2. 스코프별 활성화
    • 파일 전체가 아니라, 특정 함수에만 엄격 모드를 적용할 수도 있다.
    function strictFunction() {
        "use strict";
        // 엄격 모드에서 동작
        let x = 10;
    }
    
    function nonStrictFunction() {
        // 일반 모드에서 동작
        x = 20; // 에러 발생하지 않음
    }
  3. 프로젝트 설정
    • 엄격 모드를 프로젝트 전반적으로 사용하는 것이 좋다.
    • Babel이나 ESLint를 사용해 코드에서 자동으로 엄격 모드를 적용하거나 검사할 수 있다.

6. 엄격 모드에서 자주 발생하는 에러

  1. 선언되지 않은 변수 사용:
"use strict"; 
myVar = 10; // ReferenceError 발생

   

   2. 읽기 전용 속성에 값 할당:

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

obj.readOnly = 100; // TypeError 발생

   

   3. 중복 매개변수 금지:

"use strict";
function duplicateParams(a, a) {
    // SyntaxError 발생
}

 


7. 요약

  • 엄격 모드(Strict Mode)는 자바스크립트의 애매한 문법 사용을 제한하고, 안전하고 최적화된 코드를 작성할 수 있게 한다.
  • 장점:
    1. 더 안전하고 명확한 코드 작성.
    2. 애매한 문법 요소에 대해 에러를 발생시킴.
    3. 자바스크립트 엔진이 코드 최적화 수행.
  • 단점:
    1. 새로운 에러 발생 가능.
    2. 일부 예약어 사용 불가.
  • 실무에서는 엄격 모드를 쓰는 것이 좋다. 

8. 추가 학습 자료

'바닐라 코드 > Java Script' 카테고리의 다른 글

6. 자바스크립트의 자료형  (0) 2024.12.06
5. 변수와 상수  (3) 2024.12.05
3. 문과 식  (2) 2024.12.03
2. html에 자바스크립트 추가하기  (1) 2024.12.02
1. 자바스크립트란?  (0) 2024.12.02