자바스크립트 언어의 문법을 좀더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수있는 코드에 대해 명시적인 에러를 발생시킴.
전역의 선두 또는 함수 몸체의 선두에 'use strcit'; 를 추가시킨다. 전역의 선두에 추가할시 스크립트 전체에 적용되고,
함수몸체의 선두에 추가할시 함수몸체에서만 적용된다.
선언하지않은 변수를 참조하면 ReferenceError를 발생시킨다.
function example () {
'use strict';
x = 1;
console.log(x);// ReferenceError : x is not defined
}
중복된 매개변수 이름을 사용하면 SyntacError가 발생한다.
function example(x,x) {
'use strict';
return x+x;
}
console.log(example(x,x)); // SyntacError : Duplicate parameter name not allowed in this context
strict mode에서 함수를 일반 함수로서 호출하면 this에 undefined가 바인딩된다. 생성자 함수가아닌 일반함수 내에선 this를 사용할 필요가 없기 떄문이다.
function example () {
'use strict';
function foo() {
console.log(this); // undefined
}
foo();
function Foo() {
console.log(this); //Foo
}
new Foo();
}