Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 엄격 모드(use strict)와 비엄격 모드의 차이점 완벽 정리

JavaScript의 엄격 모드란 무엇인가?

JavaScript에서 "use strict"는 해당 코드를 엄격 모드(strict mode)로 실행하겠다는 의미를 담은 디렉티브(directive)입니다. 이는 문자 그대로의 표현식(literal expression)으로, JavaScript 1.8.5 버전부터 도입되었습니다. 이름 그대로 "use strict"를 선언하면 코드가 엄격 모드에서 실행되며, 선언하지 않으면 기존의 비엄격 모드(느슨한 모드)로 동작합니다.

엄격 모드와 비엄격 모드의 주요 차이점

  • 선언되지 않은 변수: 비엄격 모드에서는 var 없이 변수에 값을 할당해도 자동으로 전역 변수가 생성되지만, 엄격 모드에서는 ReferenceError가 발생합니다.
  • 오류 처리 강화: 읽기 전용 속성에 대한 쓰기, 삭제 불가능한 속성의 삭제, 중복된 매개변수 이름 사용 등의 실수가 조용히 무시되지 않고 명시적인 에러로 처리됩니다.
  • this 바인딩: 일반 함수 호출 시 this가 undefined로 설정됩니다(비엄격 모드에서는 전역 객체를 가리킵니다).

엄격 모드 선언 방법

엄격 모드를 선언하는 방법은 간단합니다. 스크립트나 함수의 시작 부분에 "use strict";를 추가하면 됩니다. 스크립트 최상단에 선언하면 전역 범위(global scope) 전체에 적용됩니다.

<!DOCTYPE html>
<html>
   <body>
      <p>변수를 사용했지만 선언하지 않았기 때문에 오류가 발생합니다.</p>
      <p>F8을 눌러 오류를 확인해 보세요.</p>
      <script>
         "use strict";
         a = 1;
      </script>
   </body>
</html>

위 예제에서는 "use strict"가 선언된 상태에서 변수 a를 선언하지 않고 곧바로 값을 할당했기 때문에, 스크립트 실행 시 ReferenceError가 발생합니다. 반면 엄격 모드가 아니라면 a는 자동으로 전역 변수로 생성되어 아무런 오류 없이 실행됩니다. 이처럼 엄격 모드는 잠재적인 버그를 조기에 발견하고 더 안전한 코드 작성을 돕는 유용한 도구입니다.