본문 바로가기
IT_Developers/Javascript

JavaScript - 자바스크립트 엄격모드 / 'use strict' 사용법과 이해

by 고코더 2021. 11. 2.

안녕하세요.

고코더 입니다.

 

오늘은 "use strict" 일명 엄격모드라고 말하는 자바스크립트 모드를 알아보겠습니다. 프로젝트에 들어갈때 해당 문구가 최상단에 적혀있으면 꽤나 긴장이 되는 한줄입니다. 

 

 

엄격모드 Strict mode

 

염격 모드는 느슨한 모드(Sloppy mode)와 반대되는 규칙입니다. ES5 이전에는 기본적으로 느슨한 모드가 기본이었지만 ES6부터는 반대로 엄격 모드가 기본으로 설정되어 있습니다. 


- ECMAScript 5부터 시작
- 반대 의미는 느슨한 모드(Sloppy mode)

 

염격모드 사용법

사용법은 두 가지 방법이 있습니다.

 

첫 번째 방법은 JS가 시작하는 최상단에 "use strict"를 선언하면 됩니다. 그럼 전역에 걸쳐 엄격 모드가 실행됩니다. 실무에서 보통 이렇게 사용을 많이 합니다. 

"use strict";

/*
코딩 시작
*/

 

두 번째 방법은 엄격 모드가 필요한 곳에 "use strict"를 실행합니다. 해당 함수 안에 최상단에 모드를 실행하면 안에 내용은 엄격하게 관리됩니다. 필요에 따라 사용이 가능한 방법입니다.

function start(){
    'use strict';
	/* 엄격 모드 시작!*/  
}

 

염격 모드의 장점

엄격 모드를 실행하면 최적화 작업에 용이하게 코드가 개발되게 되고, 이를 통해 느슨한 모드보다 더 빠르고 최적화되어 코드가 실행됩니다. 대형 사이트일수록 해당 모드는 기본적인 사전 작업이 될 수 있습니다.

 

 

엄격 모드의 대표적인 특징

자바스크립트를 표준으로 작성하는 분들에게는 이 모드가 실행되었을 때 크게 차이를 느끼지 못할 수 도 있습니다. 하지만 몇 가지 잘못된 습관을 가진 분들에게는 조금은 낯선 부분들이 있습니다. 대표적인 몇가지 차이를 소개합니다.

 

- 선언하지 않은 전역 변수를 사용할 없다

이 부분은 제가 느끼는 가장 큰 변화입니다. 전역 변수를 사용하고 싶을 때 변수를 선언하면 전역 변수가 되었지만 엄격 모드에서는 이 부분이 허용되지 않습니다. 아래처럼 만약 변수를 선언하면 

'use strict';
_str = '전역변수'

 

이렇게 오류가 발생합니다. 기존의 비엄격 모드에서는 가능한 방식이었지만, 엄격모드에서는 불가합니다. 

 

- 0으로 시작하는 숫자 불가

느슨한 모드에서는 자릿수를 맞추기 위해서 0으로 시작하는 이상한 숫자를 사용하여 계산식에 사용할 때가 있었습니다. 하지만 이런 이상한 숫자는 사용이 불가능합니다.

"use strict";
var sum = 012 + //  0으로 시작하면 안됨
          197

 

- 중복 인수명 불가

엄격 모드에서는 함수에서 받는 인수가 고유해야 합니다. 기존에는 몇 번째 인자가 중요했지만 고유한 인수로 함수를 개발해야 합니다. 

function sum(a, c, c){ // 중복 인수 안됨
  "use strict";
  return a + c
}

 

실무에서는 그럼 어떤 모드로 해야 할까?

ES6에서는 이미 엄격 모드가 기본이 되어 있습니다.  그리고 최적화된 속도까지 원한다면 당연히 엄격모드를 사용해야 합니다. 그리고 이미 최신 버전에서 개발을 진행중이라면 이미 엄격모드가 기본이 되어 있습니다.  하지만 클래스와 모듈을 사용해 구성하고 있다면 상황에 닦라 "use strict"를 사용하지 않을 수도 있습니다. 

 

그리고 만약 학습자라면 기본적으로 이 엄격 모드를 사용해서 공부하는 게 좋을 거 같습니다.

댓글