오늘도 나는

use strict?

ECMAScript5(ES5)가 등장하기 전엔 자바스크립트는 기존 기능을 변경하지않으면서 새로운 기능을 추가하며 계속 발전해왔다.

하지만 기존 기능을 변경하지 않으면서 새로운 기능을 추가하는 것이 장점이자 단점이되었다.

그 이유는 기존 기능을 변경하지 않으니 자바스크립트 창시자들이 실수 했던것들이나 불완전한 코드들이 지속적으로 남아있다는 것이다.

 

이 부분을 보완하고자 새롭게 제정된 것이 ES5이다. ES5에서는 새로운 기능이 추가되면서 기존 기능이 변경됐다.

그런데 ES5에서 새로운 기능이 추가됐다면 기존에 있던 기능들과 하위 호환성 문제가 생기지 않을까?

 

이 문제점을 고려해 변경 사항인 부분들은 ES5 기본모드에선 활성화 되지 않게 설계되어있다.

 

즉, 변경 사항 된 기능들을 사용하려면 "use strict" 라는 특별 지시자를 선언해줘야 이 변경사항들이 활성화된다.

 

 

사용방법

 

 

엄격 모드를 활성화 시키기 위해서는 "use strict" 특별 지시자를 스크립트 최상단에 위치해야 한다.

 "use strict" // 엄격모드 활성화
 
 alert("hello?");

 


 

다음과 같이 "use strict"가 최상단에 위치하지 않으면 엄격 모드를 선언했어도 활성화되지 않는다.

 alert("hello?");
 
 "use strict" // 엄격모드 활성화 되지 않음

 

 

엄격 모드 vs 비엄격 모드

 

그렇다면 엄격모드를 꼭 써야할까? 엄격 모드와 비엄격 모드는 어떤 차이가 있을까?

 

결론부터 말하자면 차이가 많진 않다.

 

그럼에도 불구하고 "use strict"를 선언하는 이유는 엄격모드를 활성화함으로써 개발할 때 사소한 실수를 줄여주기 때문에

개발자로서의 삶의 질이 조금 높아질수 있다는 이유다.


 count = 3;
 
 alert(count);

변수는 보통 정의되어야 사용할 수 있다. 그러나 예전에는 let 없이도 단순하게 값을 할당해 변수를 생성할 수 있었다.

따라서 use strict를 사용하지 않으면 과거 스크립트와 호환성을 유지할 수 있기 때문에 이 방식을 사용할 수 있다.

 

하지만 이렇게 변수를 생성하는 것은 나쁜 관습이다.

 "use strict"
 
 count = 3;  // error: count is not defined 

엄격모드를 활성화 하면 에러가 발생한다.

 


그렇다면 엄격모드는 필수인가?

 

모던 자바스크립트는 클래스와 모듈이라는 구조를 제공한다. 따라서 클래스와 모듈을 사용한다면 자동으로 use strict가 적용되기 때문에

use strict를 생략해도 된다.

클래스와 모듈을 사용하지 않는다면 use strict를 선언하도록 하자.

 

나도 use strict를 항상 까먹고 잘 사용안했지만 이번 계기로 자바스크립트를 사용할 때 쓰도록 노력해봐야겠다!

profile

오늘도 나는

@hcw95

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그