JavaScript [Strict Mode]

kyoto01·2024년 1월 22일

JavaScript

목록 보기
1/4

Strict Mode


JavaScript 의 Strict Mode 란 작성한 코드를 안전하고 좀 더 안정적으로 작동되게 만들어 주고

오류를 줄여 주는 제한적 모드입니다.

우리말로 ‘엄격모드’ 라고도 표현하며, "use strict"; 또는 'use strict'; 라는 지시어를 사용하여

실행 시킬 수 있습니다.

이 때 꼭 스크립트 제일 최상단 첫 줄에 입력해야 작동합니다. 만일 다른 코드가 "use strict"; 지시어보다 위에 위치한다면 Strict Mode 는 정상적으로 작동하지 않을 수 있습니다. ( 단, 코드에 영향을 주지 않는 주석의 경우, 윗줄에 위치 할 수 있습니다. )

Strict Mode 의 등장 배경


현재의 모던 스크립트라고 불리우는 ECMAScript5(ES5)가 등장하기 전인 2009년까지 사용하던 JavaScript 는 꽤 오랫동안 호환성 이슈없이 발전하여 기존의 기능을 변경하지 않으면서 새로운 기능을 추가해왔습니다. 덕분에 기존에 작성한 코드는 절대 망가지지 않는다는 장점이 있었지만 창시자들이 했던 실수나 불안정한 결정이 언어 안에 영원히 박제된다는 단점이 생겼습니다.

하여 새롭게 제정된 ES5에서는 새로운 기능이 추가되고 기능 중 일부가 변경되었기 때문에 하위 호환성 문제가 생길 가능성이 생기게 되었고 변경사항 대부분은 ES5의 기본모드( Sloppy Mode ) 에선 활성화되지 않도록 설계되었습니다.

대신 "use strict"; 이라는 특별한 지시어 를 사용하여 엄격모드 ( Strict Mode )를 활성화 했을때만 이 변경사항이 활성화되게 해놓았습니다.

기본모드인 ( Sloppy Mode ) 는 많은 오류를 허용하며, 코드의 안정성을 저해할수 있습니다. 다양한 플랫폼들의 특성과 JavaScript 의 코드기반이 점점 커지고 복잡해짐에 따라 코드의 오류를 방지하고 품질을 향상시키는 것이 중요해졌습니다.

Strict Mode 적용사항


  • 변수의 재정의가 허용되지 않습니다.
  • 암묵적 전역 변수를 방지합니다. ( 초기버젼에서는 변수를 선언하지않고 사용할 경우 암묵적으로 전역 변수가 생성되었습니다. ex. Legacy Var )
  • eval()함수와 같은 일부기능의 사용을 제한하여 보안을 강화합니다. ( eval()은 코드 주입과 같은 보안 취약점을 가질 수 있습니다. )
  • 엄격한 규칙을 적용하므로 일부 최적화 작업이 가능합니다. 이는 일부 상황에서 성능 향상을 가져올 수 있습니다.
  • 예측 불가능한 동작을 방지하여 안전한 코드를 작성하도록 돕습니다.

Strict Mode 를 꼭 사용해야 하는것은 필수적인 규칙은 아니지만, 많은 개발자들이 권장하는 사항이며 코드를 엄격하게 제어함으로써 몇가지 일반적인 오류를 방지하고, 안정성을 향상 시킬 수 있습니다.

하여 Strict Mode 를 사용하는것은 좋은 습관이지만 기존 코드베이스에서 모든 코드를 갑자기 Strict Mode 로 변경하는 것은 적절하지 않을 수 있습니다.

새로운 프로젝트에서의 시작부터 Strict Mode 를 사용하는 것이 좋습니다.

브라우저에서 콘솔에서 Strict Mode 사용하기


우리는 개발한 기능을 테스트해보기 위해 브라우저의 console 창과 친해져야 합니다.

브라우저가 제공해주는 console 창에서는 기본적으로는 ‘use strict' 가 적용되어 있지 않습니다.

기대하지 않는 결과를 얻을 수도 있기 때문입니다.

console 창에서의 ‘use strict' 적용방법은 아래와 같습니다.

'use strict'; <Shift+Enter  눌러 줄바꿈을 한다>
// 테스트하려는 코드를 입력 
<Enter를 눌러 실행>

이처럼 ‘use strict' 만 입력 후 엔터가 아니고 줄바꿈을 해준뒤 테스트할 코드를 입력해주어 입력된 코드를 한번 테스트 해보는 방법으로 사용하시면 됩니다.

끝으로 우리는 아직 모던 자바스크립트의 ‘클래스’ 와 ‘모듈’ 을 배우지 않았지만 훗날 학습하여 이 둘을 사용하면 ‘use strict' 가 자동으로 적용되어 ‘use strict' 를 생략해도 됩니다.

‘클래스’와 ‘모듈’을 배울 때 다시 한번 Strict Mode 에 대해 생각해보도록 합시다!

profile
감자

0개의 댓글