[면접준비] use strict가 무엇인가?

MOONJUNG·2022년 12월 1일
0

TIL

목록 보기
4/5
post-thumbnail

엄격모드(strict mode)란?

정의

자바스크립트 언어의 문법을 좀 더 엄격히 적용하여, 자바스트립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시키는 것

선언 방법

전역 스코프의 최상단이나 함수 내의 최상단에 'use strict' 이라고 작성하면 엄격 모드로 적용된다.

특징

  1. JavaScript가 기존에 무시했던 error 표시
  2. JavaScript 엔진 최적화 작업을 어렵게 만든 실수들을 바로 잡는다.
  3. ECMAScript 차기 버전에 정의될 문법들을 금지한다.

제한되는 문법

  1. 선언하지 않은 변수는 사용할 수 없다.
  2. delete 연산자로 변수, 함수, 매개변수 삭제가 불가능하다.
  3. 함수의 매개변수 이름은 고유해야합니다.
  4. 8진수 구문을 사용할 수 없다.
    • 변수 앞에 '0o'를 붙여 8진수로 표현 가능
    • ES6 이후 버전에서만 사용 가능
    • 예시 : var a = 0o10;
  5. with문을 사용하면 에러가 난다.
  6. 일반 함수를 호출하면 this 에 undefined가 바인딩된다.
    • 생성자 함수가 아니기 때문에 this를 호출할 필요가 없다.
  7. 헷갈리거나 잘 모르는 기능을 사용할 수 없게 합니다.
  8. 클래스와 모듈에서는 이미 엄격모드를 사용하고 있으므로 선언해주지 않아도 적용이 된다.
  9. 전역 scope에서의 this가 undefined가 된다.
    • 브라우저 환경일 경우 원래는 window 객체가 나온다.
  10. function.caller와 function.arguments에 더 이상 접근할 수 없습니다.
  11. 일부 개발자는 익숙하지 않은 기능이 많습니다.
  12. 서로 다른 엄격한 모드로 작성된 스크립트를 병합하면 문제가 발생할 수 있습니다.

느슨한 모드(sloppy mode)란?

공식적인 용어는 아니지만, 가끔 엄격하지 않은 기본값을 의미

ESLint

정의

소스코드를 실행하기 전에 소스코드를 스캔하여 문법적 오류만이 아니라 잠재적 오류까지 찾아내고 오류의 원인을 리포팅해주는 유용한 도구

특징

코딩 컨벤션을 선정 파일 형태로 정의하고 적용할 수 있다.

profile
뜨거운 열정으로 꿈을 실현하는 프론트엔드 개발자 장문정

0개의 댓글