FRONT/JAVASCRIPT

[javascript] strict mode란?

연듀 2021. 6. 25. 20:23

 

 

strict mode란?

 

function foo(){
 x= 10;
}
foo();

console.log(x); // 10

 

foo 함수 내에 선언하지 않은 x 변수에 값 10을 할당했다.

자바스크립트 엔진은 먼저 foo 함수의 스코프에서 x변수의 선언을 검색하는데 실패할 것이고,

상위 스코프(전역 스코프)에서 검색한다.

 

이 때 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다.

이러한 현상을 암묵적 전역이라 한다.

 

이는 오류를 발생시키는 원인이 될 수 있다. 오류를 발생시키기 어려운 개발 환경을 지원하기 위해

strict mode(엄격 모드)가 추가되었다.

 

 

 

적용

 

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

 

'use strict';
function foo(){
 x= 10; // ReferenceError: x is not defined
}
foo();

 

 

function foo(){
'use strict';
 x= 10; // ReferenceError: x is not defined
}
foo();

 

 

 

strict mode를 적용했을 때 에러가 발생하는 사례는 다음과 같다.

 

  • 암묵적 전역
  • 변수, 함수, 매개변수의 삭제
  • 매개변수 이름의 중복
  • with문의 사용