use strict
"use strict" 혹은 'use strict' 는 단순한 문자열처럼 생겼다.
하지만 이 문구가 스크립트 최상단에 오면 스크립트 전체가 “모던한” 방식으로 동작하게된다.
"use strict";
// 이 코드는 모던한 방식으로 실행된다.
"use strict"는 평범한 JavaScript에 몇가지 변경이 일어나게 한다.
- 기존에는 조용히 무시되던 에러들을 throwing한다.
- JavaScript 엔진의 최적화 작업을 어렵게 만드는 실수들을 바로잡는다.
- 가끔씩 엄격 모드의 코드는 비-엄격 모드의 동일한 코드보다 더 빨리 작동하도록 만들어진다.
- 엄격 모드는 ECMAScript의 차기 버전들에서 정의 될 문법을 금지한다.
"use strict" 는 대개 스크립트 전체에 적용하지만, 스크립트 최상단이 아닌 함수 본문 맨 앞에 올 수도 있다.
그러면 오직 해당 함수만 엄격 모드로 실행된다.
"use strict"는 반드시 스크립트의 최상단에 위치시키자.
alert("some code");
// 하단에 위치한 "use strict"는 스크립트 상단에 위치하지 않으므로 무시된다.
"use strict";
// 엄격 모드가 활성화되지 않는다.
"use strict" 의 위에는 주석만 사용할 수 있게 된다.
"use strict"를 취소할 방법은 없다.
일단 엄격 모드가 적용되면 돌이킬 방법은 없다.
브라우저 콘솔
개발한 기능을 테스트하기 위해 브라우저의 콘솔을 사용하는 경우, 기본적으로 use strict 가 적용되어있지 않는다는 점에 주의해야한다.
use strict 에 영향을 받는 경우라면 개발자가 기대하지 않았던 결과를 얻을 수 있기 때문이다.
콘솔에서 'use strict'를 사용하는 방법은 'use strict’를 입력한 후, Shift+Enter키 를 눌러 줄 바꿈 해 원하는 스크립트를 입력하면 된다.
'use strict'; // <Shift+Enter를 눌러 줄 바꿈 함>
// ...테스트하려는 코드 입력
// <Enter를 눌러 실행>
이 기능은 왠만한 브라우저에서 대부분 사용 가능하다.
브라우저가 오래 되어서 콘솔 창에 use strict 를 입력하는 게 불가능하다면, use strict 를 적용하는 가장 확실한 방법은 아래와 같이 코드를 래퍼로 감싸면 된다.
(function() {
'use strict';
// ...테스트하려는 코드
})()
'use strict’ 꼭 사용해야 하는가
모던 자바스크립트는 '클래스’와 '모듈’이라 불리는 진일보한 구조를 제공한다.
이 둘을 사용하면 use strict 가 자동으로 적용된다.
따라서 이 둘을 사용하고 있다면 스크립트에 "use strict" 를 붙일 필요가 없다.
결론은 코드를 클래스와 모듈을 사용해 구성한다면 "use strict" 를 생략해도 된다.