20장 strict mode

박찬미·2024년 1월 20일
0

20.1 strict mode란?

"Strict Mode(엄격 모드)"는 JavaScript에서 코드를 더 엄격하게 파싱하고 실행하는 모드를 말한다. 이 모드를 활성화하면 프로그램의 예상치 못한 오류를 줄이고 코드 품질을 향상시킬 수 있다.

ESLint같은 린트 도구를 사용하면 strict mode가 제한하는 오류는 물론 코딩 컨벤션을 설정 파일 형태로 정의하고 강제할 수 있기 때문에 더욱 강력한 효과를 얻을 수 있다.

20.2 strict mode의 적용?

전역의 선두 혹은 함수 몸체의 선두에 'use strict'; 를 추가한다.

20.3 전역에 strict mode를 적용하는 것은 피하자

전역에 strict mode를 적용하는 것은 피하는 것이 좋다.
스크립트 단위로 적용되기 떄문에 외부 라이브러리를 사용하는 경우에는 모드가 혼용되어서 오류가 발생할 수 있다.

20.4 함수 단위로 strict mode를 적용하는 것도 피하자

함수마다 일일이 조건을 적용하는 것은 번거롭다.
strict mode는 즉시 실행 함수로 감싼 스크립트 단위로 적용하는 것이 바람직하다.

//즉시실행함수
(function() {
    // 코드 작성
})();

20.5 strict mode가 발생시키는 에러

20.5.1 암묵적 번역

선언하지 않은 변수를 참조하면 refrenceError가 발생한다.

(function() {
    'use strict';
    
    x=1;
    console.log(x); // 변수에 x를 선언하지 않고 할당해서 에러 발생...
    refrenceError: x is not defined
})();

20.5.2 변수, 함수, 매개변수의 삭제

delete 연산자로 변수, 함수, 매개변수를 삭제하면 SyntaxError가 발생한다.

20.5.3 매개변수 이름의 중복

중복된 매개변수 이름을 사용하면 SyntaxError가 발생한다.

20.5.4 with문의 사용

with 문을 사용하면 SyntaxError가 발생한다.
with문을 사용하면 성능과 가독성이 나빠져서 사용을 권장하지 않는다.

20.6 strict mode 적용에 의한 변화

20.6.1 일반 함수의 this

일반 함수 호출에서는 this가 undefined로 설정되기 때문에 함수 내에서 this를 사용하는 것은 의미가 없다.

반면에 생성자 함수로서 호출하거나, 객체의 메서드로서 호출할 경우에는 this가 예상대로 동작한다.

20.6.2 arguments 객체

strict mode 에서는 매개변수에 전달된 인수를 재할당하여 변경해도 arguments 객체에 반영되지 않는다.

profile
우당탕탕

0개의 댓글