자바 스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다.
function foo() {
x = 10;
}
foo();
console.log(x); //
예제 방식:
자바스크립트 엔진은 x 변수가 어디에서 선언되었는지 스코프 체인을 통해 검색한다.
즉, 전역 객체의 x 프로퍼티를 마치 전역 변수처럼 사용 가능한 것
암묵적 전역:
변수의 선언이 아닌 프로퍼티 값이 생성 되고, 이것을 마치 전역 변수 처럼 사용할 수 있다.
암묵적 전역은 오류를 발생시킬 가능성이 크기 때문에 let, var, const 키워드를 사용하여 변수 사용 필요
하지만 오타, 문법 지식의 미비로 인한 실수 발생 가능.
따라서 ES5부터 Strict Mode 생성.
ES6 부터는 기본적으로 클래스, 모듈에 strict mode 적용
ex) ESLint (린트 도구) → strict mode 와 유사한 효과.
린트 도구란?
정적 분석 기능을 통해 소스코드를 실행하기 전 소스코드를 스캔하여
문법적 오류 + 잠재적 오류 찾아내어 오류 원인 리포팅 해줌