다시 대입하지 않을 이름을 선언합니다.
const는 선언할 때 값을 넣어야 하며 다른 값으로 재할당할 수 없습니다. 객체와 배열의 내부 값은 바꿀 수 있으므로 값 전체를 깊게 고정한다는 뜻은 아닙니다.
course.completed = true 줄은 course에 새 객체를 대입하지 않고, 이미 있는 객체의 completed 속성만 false에서 true로 바꿉니다. 출력에 쓰인 JSON.stringify(course, null, 2)의 세 번째 인수 2는 들여쓰기 칸 수여서 속성이 한 줄에 하나씩, 두 칸 들여 쓴 모양으로 pre에 표시됩니다.
속성 변경까지 막으려면 Object.freeze(course)를 호출합니다. 동결된 객체의 속성에 값을 대입하면 엄격 모드에서는 TypeError가 나고 일반 모드에서는 아무 일 없이 무시되며, 속성 값으로 들어 있는 안쪽 객체는 동결되지 않은 채로 남습니다.
const 객체의 속성이 절대 바뀌지 않는다고 오해하지 마세요. 재할당만 막습니다.
직접 바꿔보세요course에 level 속성을 추가하고 출력하세요.