본문 바로가기
Language/Javascript

엄격 모드

by 노믹 2022. 12. 16.

엄격모드의 기원

자바스크립트는 꽤 오랫동안 호환성 이슈 없이 발전해왔습니다. 기존의 기능을 변경하지 않으면서 새로운 기능이 추가되었죠.

덕분에 기존에 작성한 코드는 절대 망가지지 않는다는 장점이 있었습니다. 하지만 자바스크립트 창시자들이 했던 실수나 불완전한 결정이 언어 안에 영원히 박제된다는 단점도 생겼습니다.

이런 상황은 ECMAScript5(ES5)가 등장하기 전인 2009년까지 지속되었습니다. 그런데 새롭게 제정된 ES5에서는 새로운 기능이 추가되고 기존 기능 중 일부가 변경되었습니다. 기존 기능을 변경하였기 때문에 하위 호환성 문제가 생길 수 있겠죠? 그래서 변경사항 대부분은 ES5의 기본 모드에선 활성화되지 않도록 설계되었습니다. 대신 use strict라는 특별한 지시자를 사용해 엄격 모드(strict mode)를 활성화 했을 때만 이 변경사항이 활성화되게 해놓았습니다.

 

use strict

지시자 'use strict'는 단순한 문자열처럼 생겼습니다. 하지만 이 지시자가 스크립트 최상단에 오면 스크립트 전체가 "모던한"방식으로 동작합니다.

"use strict";

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

'use strict'는 스크립트 최상단이 아닌 함수 본문 맨 앞에 올 수도 있습니다. 이렇게 하면 오직 해당 함수만 엄격 모드로 실행됩니다.

그리고 'use strict'를 취소할 방법은 없습니다.

 

use strict 를 꼭 사용해야 하나요

"당연히 사용해야 하는 거 아니야?"라는 생각이 드시겠지만, 꼭 그렇지만은 않습니다.

누군가는 스크립트 맨 윗줄엔 "use strict"를 넣는 게 좋다고 권유할 수 있습니다. 그런데 그거 아세요?

모던 자바스크립트는 '클래스’와 '모듈’이라 불리는 진일보한 구조를 제공합니다.

이 둘을 사용하면 use strict가 자동으로 적용되죠. 따라서 이 둘을 사용하고 있다면 스크립트에 "use strict"를 붙일 필요가 없습니다.

결론은 이렇습니다. 코드를 클래스와 모듈을 사용해 구성한다면 "use strict"를 생략해도 됩니다.

 

'Language > Javascript' 카테고리의 다른 글

nullish 병합 연산자 '??'  (0) 2022.12.16
자료형 요약  (0) 2022.12.16
Object.values  (0) 2022.12.16
Reduce  (0) 2022.12.16
구조 분해 할당  (0) 2022.12.15