실수를 조용히 허용하지 않는 엄격 모드의 차이를 배웁니다.
'use strict'는 오래된 느슨한 동작 일부를 오류로 바꿉니다. ES module과 class 본문은 자동으로 strict mode이며 선언하지 않은 변수 대입 등을 막습니다.
화살표 함수 본문 맨 앞의 use strict 지시어가 그 함수 전체를 엄격 모드로 만듭니다. 그래서 선언하지 않은 undeclaredValue에 10을 대입하는 순간 ReferenceError가 나고, 안쪽 catch가 오류 이름을 붙여 ReferenceError: 선언하지 않은 변수 대입을 막았습니다.를 출력합니다. 같은 문자열이라도 다른 문장 뒤에 놓이면 지시어가 아니라 아무 일도 하지 않는 표현식이 됩니다.
엄격 모드에서는 function f(a, a)처럼 매개변수 이름을 중복하거나 010 같은 옛 8진수 리터럴, with 문을 쓰면 코드가 실행되기 전에 SyntaxError가 납니다. 또 일반 함수를 그냥 호출했을 때 this가 전역 객체가 아니라 undefined가 되어, 실수로 전역 객체에 속성을 만드는 일을 막아 줍니다.
strict mode 오류를 없애려고 모드를 제거하지 말고 실제 선언과 호출 문제를 수정하세요.
직접 바꿔보세요정상적으로 const 변수를 선언해 값을 출력하도록 고쳐보세요.