strict mode

·2022년 1월 23일

strict mode란?

먼저 strict mode는 ES5에 추가된 모드이고, 문법을 좀 더 엄격하게 적용시켜 오류를 발생시킬 가능성이 있거나 최적화 작업에 문제가 생길 확률이 있는 코드에 대해 에러를 발생시키게 할 수 있는 모드이다. 예를 들면 x = 10처럼 const와 같은 키워드를 사용하지 않고 변수를 선언했을 경우 에러를 발생시켜준다. ESLint와 같은 린트 도구를 사용하는 것이 권장되기도 하는 편이다.

strict mode는 전역이나 함수 몸체의 선두에 'use strict';를 추가하면 된다. strict 모드에서는 주로 암묵적 전역 변수(선언하지 않고 변수를 참조할 시), delete 함수로 변수, 함수, 매개변수를 삭제하려고 시도할 시, 함수의 매개변수 이름의 중복, with 문 사용시에 에러를 띄운다. 그리고 일반 함수로서 호출시 this엔 undefined가 바인딩, arguments 객체의 재할당 또한 무시된다.

function (){
 'use strict';
 
 function foo(){
  console.log(this); //undefined
 }
 foo();
 function Foo() {
  console.log(this); //Foo
 }
 new Foo();
}());

(function (a){
 'use strict';
 a = 2; //변경되지 않음. 에러는 발생하지 않음
 console.log(arguments);
}(1));

0개의 댓글