자바스크립트는 오랫동안 호환성 이슈가 없었다고 한다.
기존의 기능을 변경하지 않으면서 새로운 기능이 추가되었기 때문이다.
다시말해 기존에 작성한 코드는 절대 망가지지 않는다는 장점이 있고, 처음 자바스크립트 창시자들이 했던 실수들이 영원히 박제되었다는 단점이 있다는 말이 된다.
이후, ECMScript5(ES5) 가 등장하면서 새로운 기능이 추가되고, 기존 기능은 변경이되었다.
기존기능 변경이 일어나 하위 호환성 문제가 일어나게되었다.
따라서 변경사항 대부분은 기본모드에서는 활성화 되지 않게 설계되었다고 한다.
use strict라는 지시자를 사용하면 엄격모드를 활성화 할 수 있고, 이때에만 이 변경사항이 활성화된다.
지시자 "use strict"
이 지시자가 스크립트 최상단에 오면 스크립트 전체가 모던한 방식으로 동작한다.
물론 이 지시자가 무조건 스크립트 최상단에만 위치할 수 있는것은 아니다. 함수 본문 맨 앞에 올 수도 있는데 이렇게 되면 이 해당 함수만 엄격모드로 작동된다..
보통 스크립트 전체에 적용한다.
따라서 스크립트 최상단에 있어야 엄격모드가 활성화된다.
alert("lalala"); "use strict"
이렇게 위와같이 적을 경우에는 엄격모드가 활성화 되지 않는다.
주의: 엄격모드가 일단 적용되면 되돌릴 방법은 없다.
엄격모드는 대부분의 브라우저에서 사용이 가능하나, 브라우저가 오래되어 콘솔창에 use strict를 사용하는것이 불가능하다고 한다면
(function(){ 'use strict'; // .. 테스트하려는 코드 }) ()
이렇게 감싸서 테스트 해보면 된다.
모던 자바스크립트는 '클래스'와 '모듈' 이라고 불리는 구조를 제공하고 이 둘을 사용하면 use strict가 자동으로 적용된다고 한다.
결론적으로 코드를 클래스와 모듈을 사용해 구성할 경우 use strict를 생략해도 무관하다.
클래스와 모듈에 대해서는 이후에....