[모던 자바스크립트 딥다이브] 20장 strict mode

Soyeon·2025년 3월 20일
1

strict mode란?

function foo() {
  x = 10;
}
foo();

console.log(x);
  • 선언되지 않은 x는, 자바스크립트 엔진이 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다.
    • 이러한 현상을 암묵적 전역(implicit global)이라 한다 -> 오류를 발생시키는 원인이 될 수 있음
  • 따라서, 반드시 var, let, const 키워드를 사용하여 변수를 선언한 다음에 사용해야 한다.

ES5부터 이러한 오류를 줄여 안정적인 코드를 생산하기 위해, 오류를 발생시키기 어려운 개발 환경을 만들기로 한다. => strict mode (엄격 모드) 추가됨

  • 자바스크립트 문법을 더 엄격히 적용해 오류를 발생시킬 가능성이 높거나 최적화 작업에 문제를 일으킬 수 있는 코드에 명시적인 에러를 발생시킨다.
  • 전역의 선두 또는 함수 몸체의 선두에 추가한다.
`use strict`

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

1. 전역에 strict mode를 적용하는 것은 피하자

  • 전역에 적용한 strict mode는 스크립트 단위로 적용된다.
  • 즉, 스크립트 단위로 적용된 엄격 모드는 다른 스크립트에 영향을 주지 않는다.
  • 그러나 strict mode와 non-strict mode 스크립트를 혼용하는 것은 오류가 발생할 수 있기 때문에 전역에 strict mode를 사용하지 말 것.

2. 함수 단위로 strict mode를 적용하는 것은 피하자

  • strict mode 는 즉시 실행 함수로 감싼 스크립트 단위로 적용하는 것이 바람직하다.

strict mode 가 발생시키는 에러

  • 암묵적 전역 -> ReferenceError
  • 변수, 함수, 매개변수의 삭제 -> SyntaxError
  • 매개변수 이름의 중복 -> SyntaxError
  • with 문의 사용 -> SyntaxError
profile
탄탄한 개발자로 살아남기🗿

0개의 댓글