JS DeepDive 20장 strict mode

한칙촉·2024년 4월 16일

strict mode란?

= 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킴


strict mode의 적용

'use strict';

function foo() {
  x = 10; // ReferenceError: x is not defined
}
foo();

함수 몸체의 선두에 'use strict';를 추가하면 해당 함수와 중첩 함수에 strict mode가 적용됨


function foo() {
  x = 10; // 에러 발생 X
  'use strict';
}
foo();

선두에 위치시키지 않으면 strict mode가 제대로 동작하지 않음


  • strict mode를 전역이나 함수 단위로 적용하는 것을 피하자
  • 즉시 실행 함수로 감싼 스크립트 단위로 적용하는 것이 바람직함

strict mode가 발생시키는 에러

  • 암묵적 전역 = ReferenceError 발생
  • 변수, 함수, 매개변수의 삭제 = SyntaxError 발생
  • 매개변수 이름의 중복 = SyntaxError 발생
  • with 문의 사용 = SyntaxError 발생

strict mode 적용에 의한 변화

  • 일반 함수의 this = strict mode에서 함수를 일반 함수로서 호출하면 this에 undefined가 바인딩됨
  • arguments 객체 = strict mode에서는 매개변수에 전달된 인수를 재할당하여 변경해도 arguments 객체에 반영되지 않음
profile
빙글빙글돌아가는..

0개의 댓글