2월 18, 2024

[Javascript] 변수 선언 시 const 란? 값을 바꿨을 때 나는 에러?

 javascript에서 변수를 선언할 때 우리는 const keyword를 사용할 때가 있다. 

상황에 따라서 let, var를 사용하기도 하며, let을 사용하는 경우는 

https://www.programmingstory.com/2024/02/javascript-let-keyword-undefined.html


위 링크의 이전 포스팅에서 다루었다. 


const keyword는 어떠한 값을 나중에 변경 불가능하게 만들어주고 싶을 때 쓰는 키워드이다. 

즉 처음에 const로 변수 선언을 하고 값을 할당하면 이후에 값을 변경하고 싶어도 변경할 수 없다. 이러한 변수 선언이 왜 필요할까라고 하지만 const는 프로그래머가 실수로 값을 변경하는 것을 막거나, 외부에서라도 변수 값의 변경을 금지하고 싶다는 것을 명시적으로 표현한 것이라고 생각하면 된다. 

 

'나는 이 변수의 값을 나중에 변경 안할거니까 혹시라도 내가 변경하면 너가 에러를 띄워줘야 해!'라고 경고하는 셈이다. 

 

그럼 코드에서 만약 값을 변경한다면 어떤 에러가 나는지 살펴보자.

예를 들어,


const change='Youshouldnotchangethis';
console.log(change); // print Youshouldnotchangethis
change = 'hi'


이런식으로 const 키워드를 사용해서 change라는 변수를 할당해주었고 이후에 change라는 변수의 값을 바꿔주었다. 그렇다면 우리는 change 변수를 이미 const로 설정해주었기 때문에 이는 에러가 뜨게 된다. 

 

TypeError: Assignment to constant variable. at Object.<anonymous> (/main.js:3:8) at Module._compile (module.js:571:32) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:488:32) at tryModuleLoad (module.js:447:12) at Function.Module._load (module.js:439:3) at Module.runMain (module.js:605:10) at run (bootstrap_node.js:427:7) at startup (bootstrap_node.js:151:9) at bootstrap_node.js:542:3

 

이런식으로 에러가 뜨게 될텐데 여기서 중요한 것은 

첫 번째 문장,

TypeError: Assignment to constant variable.

이 부분이다. 에러를 잘 보면 TypeError라고 나와있고 constant variable에 할당해서 오류라는 메세지가 나오게 된다. 

즉 const 를 사용하면 실수로 값을 변경했을 시에 이런식으로 에러메세지를 띄워 금지된 행위라는 것을 알려주게 된다. 필요없어보여도 개발자들은 의식적으로 const keyword를 사용하여 실수를 방지한다고 한다.