function foo() {
x = 10;
}
foo();
console.log(x); // 10
위와 같은 상황에서 ReferenceError를 발생시켜야 하지만, 암묵적 전역으로 인해 전역객체에 x 프로퍼티를 동적생성한다. 의도하지 않는 암묵적 전역은 오류를 발생시킬 위험성이 높기 때문에 let, const 키워드 사용이 필수이다.
strict mode나 ESLint같은 린트도구를 사용하면 이러한 위험을 줄일 수 있다. ES6에서 도입된 클래스와 모듈은 기본적으로 strict mode가 적용되어 있다.
strict mode 적용법은 전역의 맨 앞, 혹은 함수의 맨 앞에 ‘use strict’;
를 추가하면 된다. 다만 strict mode 혼용으로 인한 위험이 있기 때문에 전역 strict나 함수단위 적용이 아닌, 즉시실행함수로 감싼 뒤 strict mode를 사용하는 것이 바람직하다.