파피루스

20장, _ strict mode 본문

Book/모던 자바스크립트 Deep Dive

20장, _ strict mode

떼굴펜 2024. 5. 28. 14:58
 오류 발생 가능성을 높이거나 최적화 문제를 일으킬 수 있는 코드에 대해 명시적 에러를 발생시킴으로서,
자바스크립트 문법을 좀더 엄격히 적용한 것이다.

 

 

유사한 역할로서 린트들을 사용하는데, 린트 도구는 제한 오류부터 코딩 컨벤션까지 설정 파일 형태로 정의할 수 있기에 조금 더 강력하다.

 

 

stric mode 적용하기

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

'use strict';

function foo() {
    x= 10;               //ReferenceError : x is not diefined (stric mode가 아니면 에러가 나지 않음)
}
foo();

 

strict mode 적용 시, 뭐가 다른가요?

Reference Error

: 선언하지 않은 변수를 참조할 경우 

function foo() {
    x= 10;               //ReferenceError : x is not diefined (stric mode가 아니면 에러가 나지 않음)
}
foo();

 

Syntax Error

1) delete 변수로 변수, 함수, 매개변수를 삭제 시 

function foo() {
   var x= 10;
   delete x;               // Syntax Error
}
foo();

 

2) 중복된 매개변수 이름 사용할 시 

function foo() {
    x= 10;                     // Syntax Error
}
foo();

 

3) with 문 사용 시 

(function () {
    with({x:1}) {             // Syntax Error
       console.log(x);
    }
}());

 

일반함수의 this에 undefined가 binding 된다.

function foo() {
    x= 10;               //ReferenceError : x is not diefined (stric mode가 아니면 에러가 나지 않음)
}
foo();

 

인수를 재할당해도 arguments 객체에 반영되지 않는다.

(function (value) { // value 에는 "안녕"이 들어가있다.
    value = 2;         // value =2 로 재할당
    console.log(arguments);     // { 0: "안녕", length:1 }
}());

 

stric mode 시, c를 안녕으로 바꿔도 arguments는 변경되지 않는다.

 

stric mode 아닐 시, arguments의 값도 변경되어 있다.

'Book > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글

22장, this  (0) 2024.05.29
21장, 빌트인 객체  (0) 2024.05.29
19장, 프로토 타입  (0) 2024.05.17
18장, 함수와 일급 객체  (0) 2024.05.09
17장, 생성자 함수에 의한 객체 생성  (0) 2024.05.08