불변함을 적용할 수 있는 대상

  • name : 값의 이름
  • value : 값 자체

그렇다면 이름을 어떻게 불변하게 할 것인가?

1. 이름을 불변하게 유지하는 방법

(부제 : 우리는 왜 var를 사용하지 않을까?)

1-1. var vs const

  1. var로 작성했을 경우
var v = 1;
/* 코드 1억 줄 */
/* 코드 1억 줄 */
/* 코드 1억 줄 */
v = 2;
console.log('v :', v);

변수 v를 만든 사람은 v의 값은 1일 것이라고 예상했지만, 누군가가 그 사실을 모르고! v의 값을 변경해버림.

=> 결과 : 에러조차 발생하지 않는 🚨 심각한 버그가 발생 🚨

🤦‍♀️ v를 만든 사람: 그 누구도 내 변수를 바꾸지 못하게 하고싶다…

  1. const로 작성했을 경우
const c = 1;
/* 코드 1억 줄 */
/* 코드 1억 줄 */
/* 코드 1억 줄 */
c = 2;
console.log('v :', v);
// 에러 발생!


상수 변수에 값을 대입하려고 하면 발생하는 에러.

2. 변수의 속성

변수는 원래 그 이름이 가리키는 값이 바뀔 수 있다.

하지만 상수 변수는 한번 값을 가리키게 되면,
그 이후로는 상수 변수가 가리키는 값을 변경하는 것이 금지됨

상수 변수가 가리키는 값을 변경을 시도하면 바로! 🚨에러가 발생하며 프로그램이 종료됨.
=> 👍 오히려 좋아! 왜?

  • 부주의하게 값을 바꿀 수 없음
  • 그런 시도를 했을 때 즉시 문제 파악 가능

소프트웨어가 거대하고 복잡할 수록 (eg.코드 1억줄, 20년 서비스, 오픈소스…) 엄청난 도움이 된다.