[코어 자바스크립트] 2.3 엄격 모드

업데이트:
1 분 소요

출처 : 모던 JavaScript 튜토리얼


  • 자바스크립트는 ECMAScript5(ES5)가 등장하기 전까지 기존의 기능을 변경하지 않으면서 새로운 기능이 추가되었다. 그런데 ES5에서는 새로운 기능이 추가되고 기존 기능 중 일부가 변경되었다. 기존 기능을 변경하였다는 것은, 하위 호환성 문제가 생길 수도 있다는 의미이다. 그래서 변경사항 대부분은 ES5의 기본 모드에서는 활성화되지 않고 use strict라는 특별한 지시자를 사용해 엄격 모드(strict mode)를 활성화 했을 때만 이 변경 사항이 활성화되도록 설계되었다.

1. use strict

  • 지시자 "use strict"는 단순한 문자열처럼 보이지만, 이 지시자가 스크립트 최상단에 오면 스크립트 모던한 방식으로 동작한다.
"use strict";

// 이 코드는 모던한 방식으로 실행된다.
  • "use strict"는 스크립트 최상단이 아닌 함수 본문 맨 앞에 올 수도 있다. 이런 경우에는 해당 함수만 엄격 모드로 실행된다.
  • 엄격 모드는 스크립트 전체에 적용하는 것이 좋다. 그렇지 않은 경우에 엄격 모드가 활성화되지 않을 수도 있다.
  • "use strict"가 최상단에 왔을 때 그 위에는 주석만 사용할 수 있다.
alert("code");
// "use strict"는 스크립트 상단에 위치하지 않으므로 무시된다.

"use strict";

// 엄격 모드가 활성화되지 않는다.
  • use strict를 취소할 방법은 없다. 따라서 이미 엄격 모드가 실행되고 있는 상황에서는 자바스크립트 엔진을 이전 방식으로 되돌리는 "no use strict"같은 지시자는 존재하지 않는다.
  • 모던 자바스크립트는 ‘클래스’와 ‘모듈’이라는 지일보한 구조를 제공한다. 이 둘을 이용하면 use strict가 자동으로 적용되기 때문에 스크립트에 use strict를 붙일 필요가 없다.

2. 브라우저 콘솔

  • 개발한 기능을 테스트하기 위해 브라우저 콘솔을 사용하는 경우, 기본적으로 use strict가 적용되어있지 않다. use strict에 영향을 받는 경우라는 개발자는 기대하지 않았던 결과를 얻을 수 있기 때문이다.
  • 콘솔에서 use strict를 사용하기 위해서는 'use strict'를 입력한 후, Shift+Enter키를 눌러 줄 바꿈 해 원하는 스크립트를 입력하면 된다.
  • 이 기능은 Chrome이나 Firefox와 같은 유명한 브라우저에서 대부분 사용 가능하다.
'use strict'; <Shift+Enter 눌러  바꿈 >
//  ...테스트 코드 입력
<Enter 눌러 실행>
  • 브라우저 콘솔창에 use strict를 입력할 수 없다면, 아래와 같이 코드를 래퍼로 감싸면 use strict를 적용할 수 있다.