독서

strict mode

als982001 2023. 2. 4. 20:45
  • 암묵적 전역(implicit global): 아래 코드에서는 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성하였다. 그래서 x를 전역 변수인 것처럼 사용할 수 있는데, 이러한 현상을 암묵적 전역이라 한다.
function foo() {
  x = 10;
}

foo();

console.log(x); // 10이 출력된다.
  • strict mode: 위와 같은 상황은 오류를 발생시킬 가능성이 크기 때문에, 이러한 현상을 막기 위해 자바스크립트 언어의 문법을 좀 더 엄겨깋 적용하는 것. 이 덕분에 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다.
    • 주의점: 전역에 strict mode를 적용하거나 함수 단위로 strict mode를 적용하는 것은 피하는 것이 좋다. 
    • 적용 방법: 전역의 선두나 함수 몸체의 선두에 'use strict';를 추가한다. 
"use strict";

function foo() {
  x = 10;
}

foo();	// ReferenceError: x is not defined