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문의 사용
'FRONT > JAVASCRIPT' 카테고리의 다른 글
[javascript] this (0) | 2021.06.26 |
---|---|
[javascript] 빌트인 객체 (0) | 2021.06.26 |
[javascript] 캔버스(Canvas)로 그림판 만들기(4) 이미지 저장하기 (0) | 2021.06.25 |
[javascript] 캔버스(Canvas)로 그림판 만들기(3) 색상 채우기-fillRect() (0) | 2021.06.25 |
[javascript] 함수와 일급 객체 (0) | 2021.06.24 |