ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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"를 붙일 필요가 없다~

Designed by Tistory.