728x90
반응형
function foo() {
x = 10;
}
foo();
console.log(x);
foo 함수 내에 선언되지 않은 x 에 값을 할당했을 때,
에러가 나야할 것 같지만 자바스크립트는 이 x 를 암묵적으로 전역 객체에 동적 생성한다.
이런 현상을 암묵적 전역이라고 한다.
이런 현상을 막으려 var, let, const 키워드를 사용하지만,
실수는 언제나 발생할 수 있기 때문에 ES5 부터 엄격모드(strict mode) 가 추가되었다.
ESLint 같은 정적 분석 툴을 사용해도 strict mode 와 동일한 효과를 줄 수 있으니 참고하자.
ES6 에서 도입된 클래스와 모듈은 기본적으로 strict mode 가 적용된다.
strict mode 적용
함수 몸체의 맨 위에 'use strict'; 을 추가하면 된다.
물론 전역의 맨 위에 사용하면 스크립트 전체에 엄격모드가 적용된다.
서드파티 라이브러리가 non-strict mode 일수도 있기 때문에 전역보다는
즉시 실행 함수로 스크립트를 감싸 스크립트를 구분하고,
즉시 실행 함수의 위에 strict mode 를 적용하는게 바람직하다.
728x90
반응형
'Archive > Develop' 카테고리의 다른 글
[ 모던 자바스크립트 스터디 ] 프로토타입 - 2 (0) | 2022.10.02 |
---|---|
[ 모던 자바스크립트 스터디 ] 프로토타입 - 1 (0) | 2022.10.02 |
[ 모던 자바스크립트 스터디 ] 왜 __proto__ 접근자 프로퍼티를 통해 접근하는가? (0) | 2022.10.02 |
[ NestJS ] 의존성 문제 발생 케이스 기록 (0) | 2022.09.28 |
[ 모던 자바스크립트 스터디 ] 프로토타입 (0) | 2022.09.28 |