본문 바로가기

02. JavaScript/01. 기본개념, 문법 (ES6)

JavaScript_02. 문법_17_Strict Mode

※ 본 내용은 해당 교재를 참고하여 공부한 내용과 본인의 생각을 정리한 글입니다.

https://www.yes24.com/Product/Goods/105608999

 

바닐라 자바스크립트 - 예스24

실무 역량까지 한 번에 잡을 수 있는바닐라 자바스크립트 이론서자바스크립트는 이제 브라우저를 넘어 웹 애플리케이션뿐만 아니라 마이크로 컨트롤러까지 점점 사용하는 곳이 늘어나고 있다.

www.yes24.com

 

 

 자바스크립트에서 문법을 엄격하게 체크하는 모드이다. 자바스크립트는 초창기 불완전한 기능이 존재함에도 불구하고 버전이 업그레이드될 때마다 기존 기능에 대한 수정 없이 새로운 기능이 추가되었다. 기존 기능이 변경되다 보니 하위 버전에 대한 호환성 문제가 발생된다. 그래서 ES5에서 엄격 모드가 추가된다. 엄격 모드는 그동안 암묵적으로 허용했던 불완전한 코드에 대한 문법을 엄격하게 검사하게 된다. 엄격 모드는 자바스크립트 전체 코드 또는 부분 함수에 적용이 가능하다.

 

엄격 모드는 "use strict" 지시자를 선언해서 사용할 수 있다.

 

엄격 모드 지시자 "use strict"

 

다음 예제처럼 함수 안에서만 엄격 모드를 사용할 수도 있다.

 

함수 안에 y=2; 에서만 발생

 

<!DOCTYPE html>
<html>

<head>
  <title>Document</title>
</head>

<body>
  <script>
    /*strict mode
    아래 작성되는 모든 스크립트에 대해서 엄격 모드 적용*/
    "use strict"; //엄격 모드 지시자
    x = 3.14; // 선언자를 사용하지 않았으므로 에러가 발생


    //x = 3.14; // 지시자가 없을 경우 에러가 발생하지 않는다.
    console.log(x);
    function myFunction() {
      "use strict"; // 함수 안에서만 엄격 모드 적용
      y = 2; // 선언자를 사용하지 않았으므로 에러가 발생
    }

    myFunction();
  </script>
</body>
</html>

 

console (엄격 모드 지시자 사용)

 

 

 위 코드에서 밑에 부분은 원래 x = 3.14; x가 함수 위에 있었었는데 밑에 있는게 더 와닿을거 같아서 밑에서는 위치를 바꿔서 작성했다.

<!DOCTYPE html>
<html>

<head>
  <title>Document</title>
</head>

<body>
  <script>
    /*strict mode
    아래 작성되는 모든 스크립트에 대해서 엄격 모드 적용*/
    //"use strict"; //엄격 모드 지시자
    //x = 3.14; // 선언자를 사용하지 않았으므로 에러가 발생

    function myFunction() {
      "use strict"; // 함수 안에서만 엄격 모드 적용
      y = 2; // 선언자를 사용하지 않았으므로 에러가 발생
    }

    x = 3.14; // 지시자가 없을 경우 에러가 발생하지 않는다.
    console.log(x);

    myFunction();
  </script>
</body>

</html>

 

console (함수 안에서만 적용되는 엄격 모드 지시자)