function foo() {
x = 10;
}
foo();
console.log(x); // 10
위에 코드를 보면 x는 선언되지 않아 reference 에러가 발생할꺼 같지만 JS는 자동으로 전역 변수에 x를 할당한다. 이를 암묵적 할당이라고 하는데 이와 같은 코드는 예상치 못한 에러를 발생시킬 수 있기 때문에 좋지 않은 코드이다.
그래서 ES5부터 strict mode가 적용이 됐다.
최근에는 ESLint 같은 도구의 정적 분석 기능을 통해 소스코드를 실행하기 전에 소스코드를 스캔해서 문법적 오류나 잠재적인 오류까지 찾아서 리포팅 해주는 도구를 주로 사용한다.
strict 모드는 선두에 선언해줘야 제대로 동작한다.
'use strict';
function foo() {
x = 10; // ReferenceError: x is not defined
}
foo();