use strict 란?

zoe·2024년 6월 12일
0

개발용어

목록 보기
4/12
post-thumbnail

use strict 정의

  • "use strict"는 ECMAScript 5 (ES5)에 도입된 지시어로, 스크립트나 함수가 '엄격 모드(strict mode)'로 실행되도록 한다.

'엄격 모드(strict mode)'에서 금지되는 행위들은

  • 암묵적 전역 변수 생성
  • 삭제 불가능한 프로퍼티 삭제 시도
  • 중복된 매개변수 이름
  • 안전하지 않은 동작(예: with 문 사용)

등 일반적인 JavaScript 코드에서 허용되는 몇몇 행위들이 금지된다.

use strict 사용 시 장점

  • 엄격 모드는 일부 자바스크립트 오류를 예외로 처리하므로, 오류를 빨리 발견하여 디버깅하기 쉬워 에러를 감지하는데 좋다.

  • 엄격 모드는 보안상의 취약점을 예방하고, 안전하지 않은 작업을 방지한다. 예를 들어, 암묵적인 전역 변수의 생성을 방지하여 의도치 않은 변수 충돌을 막습니다.

  • 엄격 모드는 일부 최적화를 가능하게 하는데, 예를 들어, 엄격 모드에서는 eval() 함수의 사용이 제한되어 코드 실행을 최적화할 수 있다.

단점

  • 기존에는 정상적으로 동작하던 코드가 엄격 모드에서 예외를 발생시키거나 동작이 변경될 수 있다.

해결책: 엄격 모드를 적용하기 전에 기존 코드를 테스트하고, 엄격 모드에서 발생할 수 있는 예외를 파악하여 수정하면 보완할 수 있다.

  • 전역 변수의 암묵적 생성이 금지되므로, 기존 코드에서 의도치 않은 전역 변수 충돌이 발생할 수 있다.

해결책: 모든 변수를 선언하고, 함수 내에서 var, let, const 키워드를 사용하여 변수의 범위를 명시적으로 지정하면 된다.

  • 일부 브라우저는 엄격 모드를 지원하지 않을 수 있다.

코드 상단에 "use strict";를 추가하면 엄격 모드를 활성화할 수 있지만, 브라우저 호환성을 위해 스크립트 전체를 감싸는 방법도 고려할 수 있습니다. 예를 들어, 즉시 실행 함수(IIFE, Immediately Invoked Function Expression)로 스크립트를 감싸면 지역 스코프가 생성되어 엄격 모드가 적용된다.

마치며,

use strict를 사용하면 오류 감지를 빨리하고, 암묵적 변수 생성하는 것을 방지 하여 코드 품질을 높일 수 있으며, 보안상 안정하지 않은 동작들은 금지하기 때문에 안정성 또한 향상될 것이다.

(function() {
  "use strict";

  // 엄격 모드가 적용된 코드
})();

물론 일부 브라우저에서 엄격 모드를 지원하지 않을 수도 있으나, 즉시 실행 함수로 스크립트를 감싼다면 브라우저가 다르더라도 엄격 모드를 적용할 수 있다.

profile
코당탕탕 성장기

0개의 댓글