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문의 사용
반응형