Posts 코어 자바스크립트 #2.2 엄격모드
Post
Cancel

코어 자바스크립트 #2.2 엄격모드

엄격모드(strict mode)

하위 호환성 문제

자바스크립트는 오랫동안 기존의 기능을 변경하지 않으면서 새로운 기능이 추가되었기 때문에 하위 호환성 문제가 발생하지 않는 것이 장점이었다. 그러나 자바스크립트 창시자들의 실수나 불완전한 결정이 언어 안에 영원히 박제된다는 단점도 있었다.

이에 새롭게 제정된 ES5에서는 새로운 기능이 추가되고 기존 기능 중 일부가 변경되었다. 기존 기능 변경 시 하위 호환 문제가 발생한다. 따라서 변경사항 대부분은 ES5의 기본 모드에선 활성화되지 않도록 설계되었다. 대신 use strict라는 특별한 지시자를 사용해 엄격 모드(strict mode)를 활성화 했을 때만 이 변경사항이 활성화되게 해놓았습니다.

모던 자바스크립트는 ‘클래스’와 ‘모듈’을 제공한다. 이 둘을 사용해 코드를 구성하면 use strict가 자동으로 적용되기 때문에 "use strict"를 생략해도 된다.

use strict

이 지시자가 스크립트 최상단에 오면 스크립트 전체가 “모던한” 방식으로 동작한다.

1
2
3
4
"use strict";

// 이 코드는 모던한 방식으로 실행됩니다.
...

"use strict"는 스크립트 최상단이 아닌 함수 본문 맨 앞에도 올 수 있다. 이럴 경우 오직 해당 함수만 엄격 모드로 실행된다.

“use strict”는 반드시 스크립트 최상단에 있어야 한다. 그렇지 않으면 엄격 모드가 활성화되지 않을 수도 있다."use strict"의 위에는 주석만 사용할 수 있다.

1
2
3
4
5
alert("some code");
// 하단에 위치한 "use strict"는 스크립트 상단에 위치하지 않으므로 무시된다.

"use strict";
// 엄격 모드가 활성화되지 않습니다.

use strict를 취소할 방법은 없다. 일단 엄격 모드가 적용되면 돌이킬 방법은 없다.

브라우저 콘솔

브라우저 콘솔은 기본적으로 use strict가 적용되어있지 않다. use strict에 영향을 받는다면 개발자가 기대하지 않았던 결과를 얻을 수 있기 때문이다. 그렇다면 어떻게 해야 콘솔에서 use strict를 사용할 수 있을까?

‘use strict’를 입력한 후, Shift+Enter키를 눌러 줄 바꿈 해 원하는 스크립트를 입력한다.

1
2
3
'use strict'; <Shift+Enter를 눌러  바꿈 >
//  ...테스트하려는 코드 입력
<Enter를 눌러 실행>

이 기능은 Firefox와 Chrome 같은 유명한 브라우저에서 대부분 사용 가능하다. 만약 콘솔 창에 use strict를 입력하는 게 불가능하다면, 코드를 랩퍼로 감싸는 방법을 사용한다.

1
2
3
4
5
(function() {
  'use strict';

  // ...테스트하려는 코드...
})()
This post is licensed under CC BY 4.0 by the author.

학원 #46일차: 미니 프로젝트와 파일 입출력 API: 바이트 스트림, 제네릭 메서드

💻 HTTP #7: HTTP 압축

Loading comments from Disqus ...