-
11-3. JavaScript 엄격 모드JavaScript 2023. 4. 8. 19:36
I. 엄격 모드 (strict mode) 란?
기존의 느슨한 모드에서 허용되던, 문제를 유발할 수 있는 코드들에 오류를 발생시킴
II. 엄격 모드의 적용방법과 그 효과들 예시
1. 선언되지 않은 변수 사용시 오류 발생
// 선언되지 않은 변수 사용 금지 declared = 1; // 💡 암묵적으로 전역 var 변수로 선언 'use strict'; // 쌍따옴표도 가능 notDeclared = 1; // 오류 발생!
- 위와 같이 자바스크립트 문서 최상단에 작성 (문서 전체에 적용)
- 아래와 같이, 문서, script 태그별로만 적용 - 여러 .js 파일이 페이지에 사용될 시 각각 작성해야 함
// 1.js 'use strict'; x = 1; console.log(x); // 오류 발생 // 2.js y = 2; console.log(y); // 오류 발생하지 않음
notDec1 = 1; function strictFunc () { 'use strict'; notDec2 = 2; console.log(notDec2); } console.log(notDec1); strictFunc();
- 위와 같이 특정 함수의 최상단에 작성 : 해당 함수에만 적용
2. 변수, 함수, 인자 등 삭제불가한 것을 삭제시 오류 발생
// 실제로 지워지지도 않지만 오류를 발생시키지도 않음 let toDelete1 = 1; delete toDelete1; console.log('1.', toDelete1); // 1. 1 function funcToDel1 () { console.log(true); } delete funcToDel1; console.log('2.', funcToDel1); // 2. ƒ funcToDel1 () { console.log(true); }
3. 인자명 중복 시 오류 발생
// 'use strict'; function add(x, x) { return x + x; } console.log(add(1, 2)); // 4
✨실무에서의 엄격 모드
- 클래스나 모듈 사용시 엄격 모드가 기본으로 적용됨
- 모든 문제를 방지하는 수단이 되지 않음을 기억하자
- 기존 코드에 엄격모드 적용시, 예기치 못한 오류가 발생할 수 있으니 주의
'JavaScript' 카테고리의 다른 글
12-1. JavaScript 렉시컬과 클로저 (0) 2023.04.08 11-4. JavaScript 옵셔널 체이닝 (0) 2023.04.08 11-2. JavaScript 구시대의 유물 var 쓰면 안되는 이유 (0) 2023.04.08 11-1. JavaScript 에러 핸들링 (0) 2023.04.08 10-4. JavaScript 제너레이터란? (0) 2023.04.08