writed by johan
오류를 줄이기 위해 엄격하게 자바스크립트 코드를 작성하도록 허용하는 모드이다.
문법적 오류, 잠재적인 오류에 대해 명시적인 에러를 발생시킨다.
(function() {
var let = 10;
function foo() {
'use strict';
let = 20; // SyntaxError: Unexpected strict mode reserved word
}
foo();
}());
생성자 함수가 아닌 일반 함수 내에서는 this를 사용할 필요가 없기 때문에, strict mode에서 일반 함수로 함수를 호출하면 this에 undefined가 바인딩 된다.
JavaScript의 strict mode는 ECMAScript 5(ES5)에서 도입되었으며, 이후의 ECMAScript 버전들도 이를 유지하고 있다. 현대 JavaScript 개발 환경에서는 기본적으로 ES6 이상의 버전을 사용하며, ES6 모듈은 기본적으로 strict mode로 실행된다.
Node.js에서는 각 파일이 별도의 모듈로 취급되므로, Node.js 환경에서 작성된 코드는 기본적으로 strict mode를 따른다.
React와 같은 프레임워크를 사용하는 경우, 일반적으로 Babel과 같은 트랜스파일러와 함께 사용하여 최신 JavaScript 문법을 더 넓게 호환 가능한 코드로 변환한다. Babel은 트랜스파일 과정 중에 코드를 strict mode로 변환한다.
따라서 직접 'use strict';
구문을 추가하지 않더라도 대부분의 현대 JavaScript 개발 환경에서는 이미 코드가 strict mode 조건 하에 실행된다.