20.1 strict mode란?
function foo() {
x = 10;
}
foo();
console.log(x); // ?
위의 코드를 보면 foo 함수 내에서 선언하지 않은 x변수에 값 10을 할당했다.
이때 x 변수를 찾아야 x값에 할당할 수 있기때문에 자바스크립트 엔진은 x 변수가 어디에 선언됬는지
스코프 체인을 통해 검색하기 시작한다.
- foo함수의 스코프에서 x변수 선언을 검색한다. 하지만 없으므로 상위스코프로 간다.
- 전역 스코프에도 x 변수의 선언이 존재하지 않기때문에 ReferenceError를 발생시킬것같지만 암묵적으로
전역객체에 x 프로퍼티를 동적 생성한다. 이러한 형상을 암묵적 전역이라한다.
암묵적 전역은 오류를 발생시키는 원인이 크기때문에 반드시 var, let, const 키워드를 사용해야한다.
이를 지원하기위해 ES5부터 strict mode(엄격모드)가 추가되었다.
20.2 strict mode 의 적용
strict mode를 적용하려면 전역의 선두에 use strict를 추가한다.
'use strict';
function foo() {
x = 10;
}
foo();
'Book > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
24장 클로저 (1) | 2024.11.18 |
---|---|
19장 프로토타입 (1) | 2024.11.12 |
49장 Babel과 Webpack이용한 환경구축 (2) | 2024.10.30 |
17장 생성자 함수에 의한 객체생성 (0) | 2024.10.23 |
18장. 함수와 일급객체 (0) | 2024.10.22 |