배열과 const

summerlee·2022년 9월 23일
0

TIL

목록 보기
27/39

const 는 재할당이 금지된다.

예를들어, const PI = 3.14159; 는 가능하다. 원주율 값은 변하지 않기 때문이다.
항상 똑같기 때문에 const 를 사용할 수 있었던 것이다.
만약 PI += 1 이라는 값으로 재할당을 하면 오류가 날 것이다.

const 를 배열이나 객체와 쓰게 되면 다른 사용법이 있다.

우선, 배열을 생성할 때 const 를 사용할 수 있다.
그렇게 해도 배열의 콘텐츠를 바꿀 수 있기 때문이다 중요한 건 변수 자체가 재할당 되지 않는다는 것이다.

배열은 값이 변할 수 있는데 이게 어떻게 가능하다는 것일까?

const nums = [1, 2, 3]

nums에 저장된 건 콘텐츠가 아닌 참조이다. 이 배열의 참조가 바뀌지 않는 한 가능하다.
껍질은 그대로지만 콘텐츠를 바뀔 수 있다는 것이다!
새로운 1,000개의 숫자를 넣거나 순서를 뒤바꿀 수도 있다.
그래도 이 별의 참조인 주소(nums)는 아무런 영향을 받지 않는다.

nums 의 화살표가 가리키는 건 [1, 2, 3] 이라는 배열이다.

const nums = [1, 2, 3]
nums.push(4)
nums
// [1, 2, 3, 4]

아까 봤던 원주율 값을 바꿀 때와는 달리 아무런 오류 없이 잘 바뀐다.
배열은 콘텐츠를 바꾸는 것만큼은 아무런 문제가 없다.

그릇에 갈색 달걀이 두개 있다고 치자.
그릇만 그대로 있다면 달걀은 마음대로 해도 된다.
새로운 달걀을 하나 더 붙여도 되고,
첫 번째 달걀의 색을 바꿔 배열 안의 값을 바꿀 수도 있다.
하지만 달걀을 완전히 다르게 새로운 참조로 바꾸면 오류가 생긴다.

ex)

const myEggs = ['brown', 'brown'];

myEggs.push('purple');
myEggs[0] = 'green';
// 가능

myEggs = ['blue', 'pink'];
// 불가능

즉, const 와 배열/객체를 함께 사용할 때는 참조를 바꾸거나 재할당할 수는 없지만,
배열 안의 콘텐츠는 원하는 대로 바꿀 수 있다.

인테리어 장식업자를 불러서 원하는 대로 실내를 바꿔도 외장인 껍질은 그대로인 것과 같다.






출처 : udemy the-web-developer-bootcamp-2022

profile
완벽하지 않아도 기록하려고 노력하기 😅

0개의 댓글