본문 바로가기

Software Engineering/Languages

우리를 괴롭히는 JavaScript의 자료형 | var, let, const는 무엇이 다를까

JavaScript를 사용하면서 까다로운 건 자료형일 수 있다. 이를 보완하기 위해 TypeScript까지 나왔으니까

JavaScript는 일본어과 같은 언어다. 쉬워보이면서도 그 속에 나름대로의 엄밀함 때문에, 중급까지 오르기는 쉬우나 생각보다 숙련자가 되기는 어렵기 때문이다. JavaScript를 어렵게 만드는 것은, EventListner의 존재도 있지만, 가장 첫 진입장벽은 다양한 자료형에 있는 것 같다.

 

프로그래밍을 건물을 짓는 것에 비유해볼 때, 각각의 변수들은 가장 작은 단위의 벽돌로 이해해볼 수 있을 것이다. 대부분의 언어는 이 벽돌에 대해서 차별점을 많이 두지는 않는데, JavaScript라는 언어는 이들에 대해 제법 개성적인 특징들을 부여해놓았다.

 

다양한 소재의 벽돌로 건물을 지을 수 있겠지만, JavaScript로 건물을 지을 때는, 3가지 소재의 벽돌을 사용하게 되는 것 같다. var을 클레이점토, let을 찰흙, const를 시멘트에 비유할 수 있다.

 

먼저 var을 정의할 경우, 이 var이라는 녀석은 오로지 해당 함수 내에서만 사용할 수 있다. 그 때 그 때 간단히 사용할 수 있다는 의미이다. 동시에 var의 값을 그 때 변경해줄 수 있다. 그래서 쉽게 쉽게 이용할 수 있는 클레이점토와 유사하다.

 

let의 경우, var보다 넓은 범위에 적용될 수 있다. 특정 함수 뿐만 아니라 다른 함수에도 사용될 수 있다. 동시에 var과 같이 그 때 그 때 값을 수정할 수 있다. 그래서 찰흙과 유사하다. 클레이점토보다 폭넓은 곳에 사용될 수 있으면서, 필요할 때는 쉽게 수정할 수 있다는 특징을 지닌다.

 

마지막으로 const는 시멘트와 같다. 건물을 지을 때 모든 곳에 사용되지만, 한번 정의되면 그 값을 변경할 수 없다. 변경하려할 경우, error가 나는 것을 볼 수 있을 것이다.

 

비록 정확한 비유는 아닐 수 있지만, 이러한 방식으로 var, let, const를 이용한다면, 디버깅의 과정을 짜증나는 과정이 아닌, 각기 다른 소재의 벽돌들을 이리끼워보고, 저리끼워보는 과정으로 이해할 수 있을 것이다.