자바스크립트는 오랫동안 호환성 이슈 없이 발생해왔다. 기존의 기능을 변경하지 않으면서 새로운 기능을 추가했기 때문이다. 덕분에 기존에 작성한 코드의 기능이 절대 망가지지 않는다는 장점이 있었지만, 초기 자바스크립트 창시자들이 했던 실수들이 영원히 박제된다는 단점도 있었다.
그러나 새롭게 제정된 ECMAScript5(ES5)에서는 새로운 기능이 추가되고 기존 기능 중 일부가 변경되었다. 변경사항의 대부분은 하위 호환성 문제를 피하기 위해 ES5의 기본 모드에서는 활성화되지 않도록 설계되었다. 대신 use strict 라는 특별한 지시자를 사용해 엄격 모드(strict mode)를 활성화했을 때만 이 변경사항이 활성화되도록 해놓았다.
지시자 “use strict”
또는 ‘use strict'
를 최상단에 작성하면 스크립트 전체가 모던한 방식으로 동작한다.
“use strict”
는 스크립트 최상단 뿐만 아니라 함수 본문 맨 앞에도 올 수 있다. 이렇게 하면 해당하는 함수만 엄격 모드로 실행된다.
“use strict”
를 취소할 방법은 없다.
개발한 기능을 테스트하가 위해 브라우저 콘솔을 사용한다면, 기본적으로 “use strict”
가 적용되어있지 않다는 것을 명심해야 한다!
따라서 콘솔에서 “use strict”
를 사용하려면 “use strict”
를 입력한 후 Shift + Enter 를 눌러 한번 줄바꿈하고 원하는 스크립트를 입력하면 된다.
꼭 사용해야만 하는 것은 아니다.
예를 들어 모던 자바스크립트는 ‘클래스'와 ‘모듈'이라 불리는 업그레이드된 구조를 제공한다. 이 둘을 사용하면 user strict 가 자동으로 적용되므로, 둘을 사용하고 있다면 스크립트에 “use strict”
를 붙일 필요가 없다.
즉 코드에 클래스와 모듈을 사용한다면 “use strict”
를 생략해도 무방하다!
다행스럽게도, 엄격 모드와 비엄격모드에서 차이를 보이는 기능이 많지는 않다. 그러나 엄격 모드를 사용하면 개발자의 삶의 질이 조금 더 높아질 수 있다!