모던자바스크립트 DeepDive : 20장 strict mode

te-ing·2022년 4월 22일
0
post-thumbnail
function foo() {
	x = 10;
}
foo();
console.log(x); // 10

위와 같은 상황에서 ReferenceError를 발생시켜야 하지만, 암묵적 전역으로 인해 전역객체에 x 프로퍼티를 동적생성한다. 의도하지 않는 암묵적 전역은 오류를 발생시킬 위험성이 높기 때문에 let, const 키워드 사용이 필수이다.

strict modeESLint같은 린트도구를 사용하면 이러한 위험을 줄일 수 있다. ES6에서 도입된 클래스와 모듈은 기본적으로 strict mode가 적용되어 있다.

strict mode 적용법은 전역의 맨 앞, 혹은 함수의 맨 앞에 ‘use strict’;를 추가하면 된다. 다만 strict mode 혼용으로 인한 위험이 있기 때문에 전역 strict나 함수단위 적용이 아닌, 즉시실행함수로 감싼 뒤 strict mode를 사용하는 것이 바람직하다.


strict mode 효과

  • 암묵적 전역시 에러 발생
  • 변수 함수 매개변수 삭제시 에러 발생
  • 매개변수 중복 시 에러 발생
  • with문 사용 시 에러 발생
  • 함수를 일반함수로서 호출시 this에 undefined 바인딩
  • 매개변수에 전달된 인수를 재할당하여도 arguments 객체에는 반영되지 않음
profile
병아리 프론트엔드 개발자🐣

0개의 댓글