typescript로 코딩테스트 문제를 ide에서 풀고 그 ts 파일을 js로 바꿔서 코딩테스트 사이트에 붙여넣기 하는 방식으로 문제를 풀고 있다.
그러던 와중 변환된 js 파일의 최상단에 "use strict";
라는 문구가 있었다.
뭔지 몰라서 그냥 매번 지워서 제출을 하는데 무슨 내용인지 궁금해졌다.
엄격모드란 ES5 이전에 암묵적으로 비엄격모드에서 작동되었던 모든 것들을 제한하는 것이다.
a = 1;
위와 같이 변수를 초기화하게 된다면 상식적으로 Error가 발생해야 한다.
하지만 "use strict";
를 사용하지 않고 작성하게 된다면 오류가 발생하지 않고 실행이 된다.
이러한 것들을 방지하기 위해 ES5부터 "use strict"
를 이용하여 엄격모드를 적용할 수 있다.
엄격 모드는 전체 스크립트나 함수에 적용이 가능하다. 단, {}
괄호로 묶여진 블럭문에는 적용되지 않으며, 컨텍스트와 같은곳에 적용을 시도하면 동작하지 않습니다.
// 전체 스크립트 Strict Mode 구문
'use strict';
const v = "Hi! I'm a strict mode script!";
주의사항 : strict mode와 none(?) strict mode를 연결시에는 심사숙고 하자.
function strict() {
// 함수-레벨 strict mode 문법
'use strict';
function nested() { return "And so am I!"; }
return "Hi! I'm a strict mode function! " + nested();
}
function notStrict() { return "I'm not strict."; }
js 모듈은 use strict
구문 없이도 자동으로 strict mode이다.
참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode
https://webaura.tistory.com/entry/JavaScript-공부하기-02-엄격모드-변수-use-strict-variable
안녕하세요:) 출처를 남겨준 webaura 블로그 관리자 nGyu 입니다! 아직 부족한 저의 글을 읽어주셔서 정말 감사합니다 :)