'use strict';
는 자바스크립트에서 코드를 엄격 모드(strict mode)로 실행하는 것입니다. 'use strict';
를 사용하면 선언하지 않은 변수를 사용할 수 없으며, 변수 및 함수를 삭제할 수 없는 등 자바스크립트 엔진에 보다 엄격한 기준이 적용됩니다.
선언하지 않은 변수는 사용할 수 없는 것이 원칙입니다. 그러나 다음 예시에서 보듯 x
는 var, let, const
의 키워드를 통해 선언되지 않았기 때문에 에러가 발생할 것 같지만, 실제로는 자바스크립트 엔진이 전역 객체에 프로퍼티를 생성하여 5
가 출력됩니다.
function foo() {
x = 5;
}
foo();
console.log(x); // 5
이처럼 자바스크립트 엔진은 변수가 키워드를 통해 생성되지 않은 경우, 암묵적 전역(implicit global) 변수를 생성합니다.
그러나 아래의 경우처럼 'use strict';
을 사용하는 경우, 보듯 x
가 정의되지 않았다는 메시지가 출력됩니다.
'use strict'
function foo() {
x = 5;
}
foo();
console.log(x); // x is not defined
'use strict';을 스크립트 처음에 명시하면, 스크립트 전체에 엄격 모드가 적용되며, 함수 내에 명시하면 해당 함수 및 중첩 함수에 엄격 모드가 적용됩니다.
이처럼 엄격 모드에서는 선언되지 않은 자바스크립트 엔진이 임의로 변수를 생성하지 못하게 하기 때문에 보다 안전한 코드 작성이 가능합니다.
'개발 > JavaScript' 카테고리의 다른 글
자바스크립트 클로저 설명, 예시, 활용 (0) | 2020.11.08 |
---|---|
자바스크립트 타이머 setTimeout / setInterval 설명 (0) | 2020.11.07 |
자바스크립트 프로토타입이란? (0) | 2020.10.30 |