본문 바로가기

프로그래밍(TA, AA)/자바스크립트

[자바스크립트] strict mode를 사용해야 하는 이유

"use strict"; 가 도대체 무엇이고, 이것이 의미하는 것은 무엇이며, 왜 필요한 것일까요?


Strict Mode는 ECMAScript 5버전에 있는 새로운 기능으로써, 프로그램 또는 함수를 엄격한 운용 컨텍스트 안에서 실행할 수 있게끔 합니다. 이 엄격한 콘텐스트는 몇가지 액션들을 실행할 수 없도록 하며, 좀 더 많은 예외를 발생시킵니다.


 - 흔히 발생하는 코딩 실수를 잡아내서 예외를 발생시킵니다.

 - 상대적으로 안전하지 않은 액션이 발생하는 것을 방지하거나 그럴때 예외를 발생시킵니다. 예를 들자면 전역객체들에 접근하려 한다거나 하는 것들입니다.

 - 혼란스럽거나 제대로 고려되지 않은 기능들을 비활성화시킵니다.


이 strict mode는 파일 전체에 적용시킬 수도 있고, 아니면 특정한 함수 안에서만 적용시킬 수도 있습니다.

// Non-strict code

(function() {
    "use strict";

    // Define your lilbrary strictly...
})();

// Non-strict code...


위와 같은 방식으로 한다면, 예전의 레거시 코드와 새 코드가 한 파일 안에 섞여 있을때 도움이 될 것입니다.


아마도 "use strict";는 Perl에서 온 것 같기도 합니다. 이것을 사용함으로써 오류가 발생할 수 있는 좀 더 많은 부분을 검사하여, 훨씬 더 적은 에러를 만들 수 있게 됩니다.


기존 자바스크립트 코드에 대해 좀 더 엄격한 검사를 실행시키고 싶다면 문서의 첫줄에 "use strict";를 추가하고, 기존의 것은 그대로 놔두고, 새로운 코드에 대해서만 추가하고 싶다면 각각의 함수 블록 처음에 추가해주는 것이 좋습니다.