강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

keepgoingje님의 프로필 이미지
keepgoingje

작성한 질문수

[코드캠프] 입문자를 위한 Javascript 알고리즘 이론+실습

배열에 요소 추가/제거하기 - push, pop, unshift, shift

const 배열에 값 추가, 삭제, 변경 문의

해결된 질문

작성

·

28

0

강의 ID 330604

22.배열에 요소 추가/제거하기 - push, pop, unshift, shift

위 강의 내용에 질문있습니다.
배열에 const를 사용했는데, const는 상수라 값 변경이 안되는 걸로 아는데 값을 넣고 빼고 변경할 수 있더라구요.

왜 그런지 알 수 있을까요?

블로그를 찾아봐도 딱히 잘 이해가 안되요

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! keepgoingje님!

해당 질문은 변수가 실제 저장되는 위치와 관련이 있어요!

다음과 같이 입력된 코드는 어떻게 변수를 저장하게 될까요?
const 친구들 = ["철수", "영희", "훈이"]

String, Number, Boolean의 경우에는 쉽게 저장이 가능하지만,
객체, 배열과 같이 많은 녀석들을 함께 저장하는 변수는 내부적으로 저장 방식이 달라져요!
(여유가 많이 있는 다른 공간에 저장을 해 놓고, 그 공간의 메모리주소를 변수에 저장해 놓는 방식이랍니다!)


그림으로 표현하면 다음과 같아요!

image.png



따라서, const 친구들 = ["철수", "영희", "훈이"] 의 경우,
"친구들" 변수가 const인 것이지,
["철수", "영희", "훈이"] 배열이 const인 것은 아니에요!

그러므로, const "친구들" 변수에 담긴 메모리주소 변경하는 것은 불가능하지만,
["철수", "영희", "훈이"] 배열을 변경하는 것은 가능하답니다!^^


=======================================

실습) 아래의 그림으로 이해하세요!


1. 아래의 변수 선언은 다음의 그림과 같이 저장됩니다.
const 친구들 = ["철수", "영희", "훈이"]

image.png




2. 이미 const로 만들어진 친구들 변수에 저장된 값을 바꾸는 것은 불가능해요!
친구들 = ["맹구", "짱구"]

image.png




3. 하지만, 배열과 객체가 저장되어 있는 장소는 const와는 상관이 없으므로, 수정 가능합니다.

image.png




5. 만약, 이러한 상황아래 객체와 배열이 저장된 영역까지도 수정 불가능을 원하시는 상황에서는
해당 객체를 얼리는 방법이 있어요!

* 얼리기: Object.freeze(친구들) => 실행하면, 수정되지 않음.(수정하여도 에러는 안나지만 수정이 안되어있음)

keepgoingje님의 프로필 이미지
keepgoingje

작성한 질문수

질문하기