JavaScript의 `strict mode`
이 글은 JavaScript의 strict mode
에 대해 설명합니다.
YouTube Video
JavaScript의 strict mode
JavaScript에서 엄격 모드
는 코드를 더 안전하고 오류가 발생하지 않도록 하기 위해 ECMAScript 5 (ES5)에서 도입된 기능입니다. 엄격 모드를 사용하면 일부 관대한 구문 및 잠재적으로 위험한 기능이 비활성화되고 더 엄격한 오류 검사가 적용됩니다. 이를 통해 개발자는 예상치 못한 동작을 방지하고 더 견고하고 고성능의 코드를 작성할 수 있습니다.
strict mode
활성화하기
strict mode
를 활성화하려면, 코드의 시작 부분에 다음 지시어를 추가하세요.
1"use strict";
이 선언은 전체 스크립트에 적용하거나 함수 단위로 적용할 수 있습니다. 예를 들어, 전체 스크립트에 적용하려면 다음과 같이 작성할 수 있습니다:.
1"use strict";
2
3function example() {
4 // Strict mode is applied
5}
함수별로 적용하려면 다음과 같이 작성할 수 있습니다:.
1function example() {
2 "use strict";
3 // Strict mode is applied only within this function
4}
strict mode
는 범위별로 적용되므로 함수 내에서 활성화할 수도 있습니다. 또한, 모듈에서는 기본적으로 strict mode
가 활성화되어 있으므로 모듈 내에서 개별적으로 선언할 필요가 없습니다.
strict mode
의 주요 기능과 차이점
strict mode
를 사용하면 JavaScript의 기본 동작 중 일부가 변경됩니다. 다음은 주요 예시들입니다.
암시적 전역 변수 금지
일반 JavaScript에서는 변수 선언을 생략하면 자동으로 전역 변수를 정의하지만, strict mode
에서는 오류를 발생시킵니다.
1"use strict";
2
3x = 10; // Error: x is not defined
변수는 항상 var
, let
, 또는 const
를 사용하여 선언해야 합니다.
예약어 사용에 대한 제한
향후 JavaScript 키워드(예: implements
, interface
, package
등)는 strict mode
에서 변수 이름이나 함수 이름으로 사용할 수 없습니다.
1"use strict";
2
3var package = "strict mode"; // Error: Unexpected strict mode reserved word
this
동작의 변경
일반 모드에서는 함수 내의 this
가 전역 객체(예: 브라우저에서는 window
)를 참조하지만, strict mode
에서는 this
가 undefined
입니다.
1"use strict";
2
3function example() {
4 console.log(this); // undefined
5}
6
7example();
이것은 this
의 잘못된 사용으로 인한 버그를 방지하는 데 도움이 됩니다.
삭제 불가능한 속성 삭제 금지
일반 모드에서는 삭제할 수 없는 객체 속성을 삭제하려고 하면 오류 없이 무시되지만, strict mode
에서는 오류를 발생시킵니다.
1"use strict";
2
3var obj = Object.freeze({name: "John"});
4delete obj.name; // Error: Cannot delete property 'name'
중복된 매개변수 이름 금지
일반 모드에서는 동일한 이름의 매개변수를 여러 번 선언할 수 있지만, strict mode
에서는 오류를 발생시킵니다.
1"use strict";
2
3function example(a, a) {
4 // Error: Duplicate parameter name not allowed in this context
5}
with
문 금지
with
문은 코드의 가독성을 저하시킬 수 있으며, strict mode
에서는 사용할 수 없습니다.
1"use strict";
2
3with (Math) {
4 // Error: Strict mode code may not include a with statement
5}
strict mode
의 장점
strict mode
는 여러 가지 방법으로 코드 안전성과 효율성을 향상시킵니다.
향상된 오류 감지
strict mode
에서는 일반 모드에서 간과되는 오류를 감지하여 개발자가 잠재적인 버그를 조기에 찾아낼 수 있습니다. 예를 들어, 의도하지 않은 전역 변수의 생성과 예약어의 오용을 방지합니다.
성능 향상
strict mode
에서는 JavaScript 엔진이 코드를 더 효율적으로 최적화할 수 있습니다. 그 결과 실행 속도가 향상될 수 있습니다.
코드 보안 강화
this
처리 방식이 더 엄격해져 불필요한 전역 객체에 접근하는 것을 방지하고 코드 보안을 강화합니다. 추가적으로, 예약어 사용 제한은 향후 키워드와의 충돌을 방지합니다.
호환성 및 고려사항
strict mode
는 ECMAScript 5에서 도입되었으며, 이전에 출시된 브라우저에서는 지원되지 않습니다. 그러나, strict mode
를 활성화해도 지원하지 않는 브라우저에서는 단순히 무시되며, 스크립트는 깨지지 않습니다. 따라서 일반적으로 안전하게 사용할 수 있습니다.
대규모 기존 프로젝트에 strict mode
를 도입할 때는 예기치 않은 오류를 방지하기 위해 철저한 테스트가 필수입니다.
결론
JavaScript의 strict mode
는 코드 품질을 향상시키는 데 매우 유용한 기능입니다. 특히 대규모 프로젝트나 팀 개발에서는 예기치 않은 버그와 오류를 방지하고 코드 가독성과 유지 보수성을 높이기 위해 엄격 모드를 적극적으로 사용하는 것이 권장됩니다.
strict mode
를 이해하고 적절히 적용하면 JavaScript의 문제점을 피하고 더 안전하고 효율적인 개발이 가능합니다.
위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.