20. strict mode

Jun_Gyu·2025년 1월 14일
0

한 발자국 더, JS

목록 보기
13/34
post-thumbnail

1. strict mode

ES5부터 추가되었으며, 코드에 더 나은 오류 검사를 적용하는 방법.

  • Strict Mode를 사용하면 암시적으로 선언한 변수를 사용하거나 읽기 전용 속성에 값을 할당하거나 속성을 추가할 수 없다.

strict mode의 특징은 아래와 같다.

  • 반드시 var, let, const 키워드를 사용해 변수를 선언한 후 사용해야함
  • 오류 발생 가능성이 높거나, JS엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 명시적 에러 발생시킴.



ESLint

정적 분석 기능을 통해 소스코드를 실행하기 전 문법적 오류나 잠재적 오류를 찾아내먀, 오류의 원인을 피드백 해주는 도구.

strict mode의 기능과 함께 코드 컨벤션을 파일 형태로 정의 및 강제를 할 수 있다는 장점이 있다.



2. strict mode의 사용방법

함수 몸체의 선두 또는 전역의 선두에 'use strict'; 를 추가

전역에 적용시킨 strict mode는 스크립트 단위로 적용되기 때문에
전역이나 함수 단위로 적용하지 않는것이 바람직하며,
즉시 실행 함수로 감싼 스크립트 단위로 적용하는 것이 제일 베스트이다.



3. strict mode가 발생시키는 에러

에러의 종류에는 크게 4가지가 존재하며, 각각 ReferenceError(참조에러), SyntaxError(문법에러)를 발생시킨다.

에러의 종류는 아래와 같다.

  • 암묵적 에러

    선언하지 않은 변수를 참조하면 RefferenceError를 발생시킴.


  • 변수, 함수, 매개변수 삭제

    delete 연산자로 변수, 함수, 매개변수를 삭제 시 문법 오류인 SyntaxError가 발생함.


  • 매개변수명 중복

    중복된 명칭으로 인한 문법오류 SyntaxError 발생.


  • with문 사용

    with문 사용시 SyntaxError가 발생.
    with문으로 전달된 객체가 스코프 체인에 추가되어
    동일 객체의 프로퍼티 반복 사용시 객체명을 생략할 우려가 있어 성능과 가독성에 좋지 않음.



4. strict mode 적용에 의한 변화

  • 생성자 함수가 아닌 일반 함수 내부에서는 this를 사용할 필요가 없기 때문에 strict mode에서 함수를 일반 함수로서 호출하면 thisundefined가 바인딩됨.
  • strict mode에서 매개변수에 전달된 인수를 재할당하여 변경하더라도 arguments 객체에는 반영되지 않음.



profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글