ES5에서 등장한 strict mode는 기존 Javascript가 기본으로 채택하던 sloopy mode(느슨한 모드, 공식 용어는 아님)을 해제하고 보다 엄격한 스타일로 코드를 작성하도록 사용하는 모드를 말한다. strict 모드를 사용하면 sloopy 모드에서는 넘어갈 수 있던 오류들이 에러로 변환되면서 보다 안전한 프로그램을 작성할 수 있다. 또한 자바스크립트 엔진의 최적화 작업을 방해하는 코드들을 지양하기 때문에 엄격 모드를 통해 코드를 작성하면 속도 면에서 비엄격 모드보다 우수한 모습을 보이기도 한다. (물론 엄격 모드를 쓴다고 무조건 느슨한 모드보다 빠르다는 아님)
strict mode를 사용하는 방법은 간단하다. 함수 혹은 script 최상단에 'use strict'; 문장을 작성하면 해당 스코프에는 엄격 모드가 적용된다. 그렇지만 sloopy mode에서 strict mode로 넘어갈 때에는 단순히 '코드 검사가 엄격해진다'라고 생각하면 안 된다는 사실에 주의해야 한다. 예를 들어서 sloopy mode의 생성자가 아닌 일반 함수에서 this를 호출하면 전역 객체가 반환된다. 그렇지만 strict mode에서는 undefined가 반환됨을 확인할 수 있다. (꼭 undefined가 아니더라도 strict mode에서는 this가 가리키는 값이 null이나 undefined일 때 전역 객체로 변환하는 작업을 거치지 않는다.) 이처럼 strict mode일 때 다른 로직이 적용되는 경우가 존재하기 때문에 조심할 필요가 있다.
다행히 strict mode는 보다 쉽게 사용할 수 있다. 그리고 우리는 이미 모르는 사이에 strict mode를 사용하고 있었다. 사실 export 문을 통해 내보낸 모듈은 'use strict;' 문장을 작성해주지 않아도 자동적으로 strict mode가 적용된다.
'프론트엔드 기본개념 복습 > Javascript' 카테고리의 다른 글
[Node.js] pkg - Node.js 애플리케이션 컴파일하기 (0) | 2022.04.18 |
---|---|
[Javascript] 명시적 타입 변환 (Explicit Type Conversion) (0) | 2022.04.16 |
[Javascript/React] element가 오버플로우중인지 여부 판단하기 (0) | 2022.04.14 |
[React] Intersection Observer API를 활용한 Infinite Scroll과 Lazy Loading (0) | 2022.03.09 |
[Javascript] ES6 (ECMASCRIPT 2015) (0) | 2022.03.04 |