엄격 모드(Strict Mode)
1. 자바스크립트와 자유도
- 자바스크립트는 유연하고 자유도가 높은 언어다.
- 하지만, 초기 자바스크립트에는 애매한 문법이 존재했다.
- 이런 문법은 작은 스크립트에서는 문제가 없지만, 복잡한 프로그램에서는 에러의 원인이 될 수 있다.
2. 엄격 모드란?
- 엄격 모드(Strict Mode)는 자바스크립트의 애매한 문법 사용을 제한하는 기능이다.
- 이 모드를 사용하면 더 안전하고 명확한 코드를 작성할 수 있다.
- 활성화 방법: 파일 최상단에
"use strict";
를 추가한다.
"use strict"; // 엄격 모드 활성화
let x = 10; // 정상 작동
undeclaredVariable = 20; // 에러 발생: 선언하지 않은 변수
3. 엄격 모드 활성화의 장점
- 안전한 코드 작성
- 잘못된 코드가 실행되지 않도록 방지한다.
- 예: 선언되지 않은 변수를 사용하는 실수를 에러로 처리.
- 에러 방지
- 기존 자바스크립트의 애매한 문법 요소를 사용할 경우 에러를 던진다.
- 예: 읽기 전용 속성에 값을 할당하려 할 때.
- 코드 최적화
- 자바스크립트 엔진이 엄격 모드로 작성된 코드를 더 효율적으로 최적화한다.
- 이는 실행 속도를 개선한다.
4. 엄격 모드 활성화의 단점
- 새로운 에러 발생
- 이전에는 발생하지 않던 오류가 발생할 수 있다.
- 예: 선언하지 않은 변수를 사용할 때.
"use strict"; undeclaredVariable = 10; // 에러 발생: 선언되지 않은 변수
- 예약어 사용 제한
- 미래 버전에 추가될 가능성이 있는 예약어를 사용할 수 없다.
- 예:
public
,private
와 같은 키워드.
"use strict"; let public = "value"; // 에러 발생: 예약어 사용 금지
5. 실무에서 엄격 모드 활용
- 모듈(Module)
- ES6 모듈에서는 기본적으로 엄격 모드가 활성화된다. 별도로 추가하지 않아도 된다.
// ES6 모듈은 엄격 모드가 기본 적용됨 export function greet(name) { return `Hello, ${name}`; }
- 스코프별 활성화
- 파일 전체가 아니라, 특정 함수에만 엄격 모드를 적용할 수도 있다.
function strictFunction() { "use strict"; // 엄격 모드에서 동작 let x = 10; } function nonStrictFunction() { // 일반 모드에서 동작 x = 20; // 에러 발생하지 않음 }
- 프로젝트 설정
- 엄격 모드를 프로젝트 전반적으로 사용하는 것이 좋다.
- Babel이나 ESLint를 사용해 코드에서 자동으로 엄격 모드를 적용하거나 검사할 수 있다.
6. 엄격 모드에서 자주 발생하는 에러
- 선언되지 않은 변수 사용:
"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)는 자바스크립트의 애매한 문법 사용을 제한하고, 안전하고 최적화된 코드를 작성할 수 있게 한다.
- 장점:
- 더 안전하고 명확한 코드 작성.
- 애매한 문법 요소에 대해 에러를 발생시킴.
- 자바스크립트 엔진이 코드 최적화 수행.
- 단점:
- 새로운 에러 발생 가능.
- 일부 예약어 사용 불가.
- 실무에서는 엄격 모드를 쓰는 것이 좋다.
8. 추가 학습 자료
- MDN Strict Mode 공식 문서
- ESLint 규칙: strict
'바닐라 코드 > 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 |