[TCP School/자바스크립트] 예외 처리 - Strict 모드

2023. 4. 27. 11:53

ECMAScript 5에서 처음 소개된 strict 모드는 자바스크립트 코드에 더욱 엄격한 오류 검사를 적용해 준다.

 

strict 모드는 스크립트나 함수의 맨 처음에 'use strict' 지시어를 사용해 선언할 수 있다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>strict</title>
</head>
<body>
    <h1>strict 모드</h1>
    <p id="text"></p>

    <script>
        'use strict'
        try {
            num = 123;
        } catch(ex) {
            document.getElementById('text').innerHTML = ex.name + '<br>';
            document.getElementById('text').innerHTML += ex.message;
        }
    </script>
</body>
</html>

 

위 코드는 try 문에서 선언되지 않은 num 변수를 사용했기 때문에 오류를 발생시킨다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>strict</title>
</head>
<body>
    <h1>블록별 strict 모드</h1>
    <p id="noStrict"></p>
    <p id="funcStrict"></p>

    <script>
        str = '실수';
        document.getElementById('noStrict').innerHTML = str + '<br>';
        
        function strictBlock() {
            'use strict'
            try {
                num = 123;
            } catch(ex) {
                document.getElementById('funcStrict').innerHTML = ex.name + '<br>';
                document.getElementById('funcStrict').innerHTML += ex.message;
            }
        }    

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

 

str은 strict 모드가 아니기 때문에 자동으로 전역 변수로 선언된다.

함수 strictBlock() 내부의 num은 strict 모드이기 때문에 선언되지 않은 변수 num에 대해 오류를 발생시킨다.


strict 모드의 특징

자바스크립트의 strict 모드는 기존 자바스크립트 언어의 일부 기능을 제한한 문법을 사용한다.

또한, 몇 가지 중요한 기능을 수정하여 강력한 오류 검사와 함께 향상된 보안 기능을 제공한다.

 

기존 자바스크립트의 문법과 다른 strict 모드의 문법은 다음과 같다.

대상 제한 사항
변수 선언되지 않은 변수나 객체를 사용할 수 없음
eval() 함수 내에서 선언된 변수는 외부에서 사용할 수 없음
프로퍼티 읽기 전용 프로퍼티에는 대입할 수 없음
한 프로퍼티를 여러 번 정의할 수 없음
함수 함수를 구문이나 블록 내에서 선언할 수 없음
매개변수 매개변수의 이름이 중복되어서는 안됨
arguments 객체의 요소 값을 변경할 수 없음
문자열 문자열 'eval'과 'arguments'는 사용할 수 없음
8진수 숫자 리터럴에 8진수 값을 대입할 수 없음
this this 포인터가 가르키는 값이 null이나 undefined인 경우 전역 객체로 반환되지 않음
delete delete 키워드를 사용할 수 없음
with with 문을 사용할 수 없음
예약어 다음 예약어는 사용할 수 없음
(implements, interface, let, package, private, protected, public, static, yield)

TCP School의 강의 내용을 정리한 포스트입니다.

http://www.tcpschool.com/javascript/intro

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

BELATED ARTICLES

more