[딥다이브] 20장 Strict mode

주니·2023년 4월 9일
0

딥다이브

목록 보기
12/20

20. Strict mode

  • 잠재적인 오류를 발생시키기 어려운 개발 환경을 만들고 그 환경에서 개발하는 것이 좀 더 근본적인 해결책이다.
  • ES5부터 strict mode가 추가됐다.
  • ESLink 같은 린트 도구를 활용해 동일한 효과를 얻을 수 있다.
  • ES6에서 도입된 클래스와 모듈은 기본적으로 strict mode가 적용된다.

🔖암묵적 전역 : 선언하지 않은 식별자에 값을 할당, 전역 객체의 프로퍼티가 됨

strict mode의 적용

  • 함수 몸체 선두에 'use strict';를 추가한다.
  • strict mode와 non-strict 스크립트를 혼용하는 것은 오류를 발생시킬 수 있다. ⇒ 즉시 실행 함수로 스크립트 전체를 감싸서 스코프를 구분하고 즉시 실행 함수의 선두에 strict mode를 적용한다.
  • 함수 단위로 strict mode를 적용하는 것을 피하자
// 즉시 실행 함수의 선두에 strict mode를 적용
(function () {
	'use strict';
// do something
}());

strict mode가 발생시키는 에러

  • 암묵적 전역 : ReferenceError가 발생한다.
  • delete 연산자로 변수, 함수, 매개변수를 삭제하면 SyntaxError가 발생한다.
  • 중복된 매개변수 이름을 사용하면 SyntaxError가 발생한다.
  • with문을 사용하면 SyntaxError 가 발생한다.

strict mode 적용에 의한 변화

일반 함수의 this

함수를 일반 함수로서 호출하면 this에 undefined가 바인딩된다. 에러는 발생하지 않는다.

argumenyts의 객체

매개변수에 전달된 인수를 재할당하여 변경해도 arguments 객체에 반영되지 않는다.

📄Strict mode 정리

  • 엄격하게 코드 사용 규칙을 제한하고, 잠재적으로 오류가 발생할 수 있는 전역 변수 사용을 제한하기 때문에 더 좋은 코드를 작성하는데 도움을 준다.
  • 클래스와 모듈은 기본적으로 strict mode가 적용된다.
  • 미래 ECMAScript의 진화에 대비한다.
  • 이미 작성해서 사용하고 있는 자바스크립트 파일에는 예상치 못한 오류를 발생시킬 수 있기에 Strict mode 전환을 피해야 한다.
  • 새로 자바스크립트 파일을 만드는 시점에는 사용하는 것을 권장한다!!

0개의 댓글