[Javascript] 엄격 모드
📌 참고 사이트
엄격 모드
ko.javascript.info
📋 자바스크립트의 발전과 엄격 모드
자바스크립트는 기존의 기능을 변경하지 않으면서 새로운 기능이 추가되었기 때문에 오랫동안 호환성 이슈가 없고, 기존에 작성한 코드는 절대 망가지지 않는다는 장점을 가지고 발전해 왔다.
but 불완전한 개념이나 실수가 언어 안에 영원히 박제되는 단점을 가지고 있었다.
이는 ES5 등장 전까지 계속되었다.
새롭게 지정된 ES5에서는 새로운 기능이 추가되고, 기존 기능 중 일부가 변경되었다. 따라서 이때부터 호환성 문제가 생기기 시작하여 변경사항 대부분은 ES5의 기본 모드에서는 활성화되지 못하도록 설계하였다.
변경 사항을 활성화하려면 use strict라는 지시자를 사용해야만 한다.
📋 use strict
📍 use strict 사용하기
➡️ 단순 문자열처럼 생긴 "use strict" 혹은 'use strict'를 스크립트 최상단에 작성하면 스크립트 전체에 변경 사항이 활성화되게 된다. (가장 많이 사용하는 방식)
"use strict"
// 이 코드는 모던한 방식으로 실행됩니다.
.....
❗ "use strict"는 스크립트 최상단에 있어야 한다. 그렇지 않으면 엄격 모드가 활성화되지 않을 수 있다.
("use strict"의 위에는 주석만 사용할 수 있다.)
➡️ "use strict"를 함 수 본문 맨 앞에 작성하면 오직 해당 함수만 엄격 모드로 실행된다.
➡️ use strict를 취소할 수 있게 하는 지시자는 없다. 즉, 엄격 모드가 한 번 적용되면 돌이킬 수 없다.
📍 브라우저 콘솔에서의 use strict
➡️ 개발 기능 테스트를 위한 브라우저 콘솔을 사용하는 경우는 기본적으로 use strict가 적용되어 있지 않는다.
➡️ 콘솔에서 use strict를 사용하기 위해서는 "use strict" 입력 후 Shift + Enter 키를 눌러 줄 바꿈을 하여 원하는 스크립트를 입력하면 된다. (유명 브라우저에서 대부분 사용 가능한 방법)
📍 'use strict'를 꼭 사용해야 할까?
당연히 사용해야 하는 것은 아니다.
모던 자바스크립트에서는 '클래스'와 '모듈' 을 제공하는데, 이 둘을 사용하면 use strict가 자동으로 적용되므로 굳이 스크립트에 "use script"를 붙일 필요가 없다.
사실 엄격 모드와 비 엄격 모드에서 차이를 보이는 기능은 그렇게 많지 않지만 엄격 모드를 사용하는 것이 개발자에게 더 좋다.