-
Part 01. Hello world : 엄격모드이노베이션캠프/사전캠프: Js 공부 2023. 5. 11. 19:10
> 주절주절
집중력이 요즘 정말 많이 떨어진듯;; 안녕하세요, 몽총이 입니다
1. 바탕설명
- Js 는 빠르게, 그리고 이렇게까지 상용화될지 모르고 만들어진 언어이다보니 창시자들의 실수나 불완전한 결정이 몇가지 남아있는 상황임.
이를 해결하기 위해 ES5(2009년)가 등장!
ES5는 새로운 기능을 추가하고 기존 기능 중 일부를 변경함.
하지만 이럴 경우, 하위호환성 문제가 생기는 건 당연지사..
그래서 변경사항 대부분은 ES5의 기본 모드에서는 활성화가 되지 않도록 설계되어 있음.
대신 use strict 라는 특별한 지시자를 사용해 "엄격모드"를 활성화 할 때만 이 변경 사항이 활성화 되도록 해놓음.
2. use strict
- "use strict" 또는 'use strict'
: 이 지시자가 스크립트 최상단에 오면 스크립트 전체가 "모던한" 방식으로 동작함.
"use strict"; // 이 코드는 모던한 방식으로 실행됩니다. ...
(함수 본문 맨 앞에 위치하는 것도 가능 : 이렇게 할 시, 오직 해당함수만 엄격모드로 실행됨, 보통 스크립트 전체에 적용하기는 함)
- "use strict" 의 위에는 주석만 사용할 수 있음
- use strict 를 취소할 방법은 없음. 즉, Js 엔진을 이전 방식으로 되돌리는 "no strit" 같은 지시자는 존재하지 않음. 시작하면 돌이킬 방법 없음
3. 브라우저 콘솔
- 브라우저 콘솔에는 기본적으로 use strict가 적용되어 있지 않음
: 왜냐, use strict에 영향을 받는 경우, 개발자가 기대하지 않았던 결과를 얻을 수도 있기 때문
- 콘솔에서 사용할 수 있는 아법
: 'use strict'를 입력한 후
shift + Enter 를 눌러 줄바꿈을 해 원하는 스크립트를 입력하면 됨
'use strict'; <Shift+Enter를 눌러 줄 바꿈 함> // ...테스트하려는 코드 입력 <Enter를 눌러 실행>
( Firefox, Chrome 같은 유명한 브라우저에서 대부분 사용 가능)
- 브라우저가 오래 되어 콘솔 창에 use strict를 입력하는 게 불가능한 경우, 아래와 같이 코드를 래퍼로 감싸버리면 됨
(function() { 'use strict'; // ...테스트하려는 코드... })()
4. 'use strict' 사용해야하나?
- 꼭 사용해야하는 건 아님
- 왜냐? 모던 자바스크립트는 '클래스'와 '모듈' 구조를 제공함. 결국 코드 내에서 이 둘을 사용하면 use strict가 자동으로 적용이 된다는 거임.
- 따라서 이 둘을 사용하고 있다면 스크립트에 "use strict"를 붙일 필요가 없다~
'이노베이션캠프 > 사전캠프: Js 공부' 카테고리의 다른 글
Part 01. Hello world : 변수와 상수 (0) 2023.05.12 Part 01. Hello world : 자료와 변수 (0) 2023.05.12 Part 01. Hello world : 변수? 표현식? 문? (0) 2023.05.11 Part 01. Hello world : 코드구조 (0) 2023.05.11 Part 01. Hello world : 시작하기 전에 (0) 2023.05.11