Strict Mode는 언어 자체의 엄격한 문법 규칙을 적용해 개발자의 의도와 상관없이 발생하는 오류를 예방합니다. 잠재적 오류를 줄이기 위해 코드에 명시적인 에러를 발생시키켜 코드의 안정성을 높입니다.
eslint는 소스 코드 실행 전 정적 분석을 통해 문법적 오류와 잠재적 오류를 걸러주는 도구입니다.
strict mode와 유사한 효과를 얻을 수 있습니다.
strict는 자바스크립트의 실행 모드 중 하나이고 eslint는 도구라는 정도의 차이가 있어 익숙한 걸로 사용하면 됩니다. (모던 자바스크립트 Deep Dive 저자 이웅모님께서는 린트 도구 사용을 더 선호하신다고 합니다.)
eslint에서 다 처리를 해주겠지만 그럼에도 개발자로서 strict mode에서 제한하는 문법이나 잠재적 버그를 갖고 있는 코드들을 알아두면 도움이 될 거라 생각합니다.
코드 선두에 'use strict';
를 명시해야 합니다.
함수 단위로 모드가 적용되며 다른 script끼리는 영향을 받지 않습니다.
선언하지 않은 변수를 참조하면 Reference 오류가 발생합니다.
변수 선언 키워드를 사용하지 않은 글로벌 변수도 같은 오류가 발생합니다.
예약어 등 쓸 수 없는 프로퍼티나 다른 타입에 할당하게 되면 TypeError가 발생합니다.
중복된 매개변수를 허용하지 않습니다.
delete 키워드로 삭제를 수행하면 SyntaxError가 발생합니다.
with문은 특정 객체의 이름을 생략할 수 있도록 도와주는 명령어입니다.
성능과 가독성이 떨어져 사용하지 않는 것이 좋습니다.
Strict mode에서 일반 함수의 this는 undefined가 됩니다.
new 키워드를 사용해서 호출해야 this가 바인딩 됩니다.
파라미터로 받은 value 값은 변경이 되지만 arguments 객체에 반영되지 않습니다.
use strict 써봐야겠습니다 ㅎㅎㅎ 오늘도 새로운 지식 +1