: strict mode(엄격 모드)는 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시키는 것이다.
function foo(){
x = 10; // 선언하지 않은 x변수 -> 암묵적 전역 발생
}
foo();
console.log(x); //10
'use strict'; // strict mode 활성화
'use strict';
를 전역의 선두나 함수 몸체의 첫 번째 실행문에 추가하면 strict mode가 적용된다.'use strict'; // 전역에 선언해서 스크립트 전체가 strict mode로 실행된다
function foo(){
x=10; // ReferenceError: x is not defined
}
foo();
function foo(){
'use strict'; // 함수 몸체의 맨 앞에 위치해서 foo 함수 내부에서만 strict mode가 적용된다
// 함수 전역에는 적용되지 않는다.
x=10; // ReferenceError: x is not defined
// 변수 선언 해야한다.
}
foo();
function foo(){
x=10; // 에러가 발생하지 않는다 (암묵적 전역 변수 생성)
'use strict'; // 함수 몸체의 첫 줄이 아니라서 무시된다. (문자열로 처리됨)
}
foo();
<!DOCTYPE html>
<html>
<body>
<script>
'use strict'; // 다른 스크립트에 영향을 주지 않고 해당 스크립트에 한정되어 적용됨
</script>
<script>
x = 1; // 에러가 발생하지 않는다.
console.log(y);
</script>
<script>
'use strict';
y = 1; // ReferenceError: x is not defined
console.log(y);
</script>
</body>
</html>
// 스크립트 단위로 적용된 strict mode는 다른 스크립트에 영향을 주지 않고 해당 스크립트에 한정되어 적용된다.
// 즉시 실행 함수의 선두에 strict mode 적용
(function () {
'use strict';
// Do something..
}());