자바스크립트는 꽤 오랫동안 호환성 이슈 없이 발전해왔다고 한다. (정말?)
기존의 기능을 변경하지 않으면서 새로운 기능이 추가되었다.
덕분에 기존에 작성한 코드는 절대 망가지지 않는다는 장점이 있었는데, 자바스크립트를 개발한 창시자들이 했던 실수, 불완전한 결정이 언어 안에 영원히 남아있게되는 담점도 있다.
이런 상황은 ECMAScript5(ES5)가 등장하기 전인 2009년까지 지속되었으나, 새롭게 제정된 ES5에서는 새로운 기능이 추가되고 기존 기능 중 일부가 변경되었다.
기존 기능을 변경하였기 때문에 하위 호환성 문제가 생길 수 있겠지?
그래서 변경사항 대분은 ES5의 기본 모드에서는 활성화 되지 않도록 설계 되었다.
대ㅔ신에 use strict
라는 특별헌 지시자를 사용해 strict mode(엄격모드)를 enable 했을때만 이 변경사항이 enable 되도록 해두었다.
지시자 "use strict"
은 단순한 문자열처럼 생겼지만, 스크립트 최상단에 오면 느슨했던 자바스크립트에 긴장감을 불어주면서 엄격한 모드로 동작한다.
"use strict";
// 이 코드는 모던한 방식으로 실행됩니다.
...
추가로 "use strict"
는 스크립트 최상단이 아닌 함수 본문 맨 앞에 올수도 있는데, 이렇게 되면 해당 함수만 strict mode로 실행된다.