강의

멘토링

로드맵

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

이선재님의 프로필 이미지
이선재

작성한 질문수

한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지

배열

객체와 배열의 const 차이

작성

·

13

0

const로 했을 때 객체는 수정이 되고 배열은 수정이 안된다는 설명 부분이 이해가 잘 안됩니다. 고유 ID가 아니라는 말도 이해가 잘 안되는데 보충 설명을 받을 수 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 이선재님.

const 키워드는 변수를 선언하지만, 이 변수가 참조하고 있는 객체나 배열의 값을 변경할 수 없다는 의미는 아닙니다. const로 선언된 변수는 재할당이 불가능하지만, 객체나 배열 같은 경우에는 그 내부의 값을 변경할 수 있습니다. 이 때문에 객체와 배열은 “불변”하지 않다고 할 수 있습니다.

객체와 배열의 const 선언 차이

  • 객체와 배열은 참조형 데이터입니다. 이는 변수가 실제로 담고 있는 것은 객체나 배열이 아니라, 그들이 저장된 메모리 주소입니다.

  • const로 선언하면 변수 자체는 같은 메모리 주소를 계속 참조하지만, 그 주소에 저장된 객체나 배열의 속성이나 요소는 수정할 수 있습니다.

  • 고유 ID가 아니라는 점은 변수 자체가 객체나 배열의 상태를 고유하게 보장하지 않기 때문에, 내부 상태는 변할 수 있다는 의미입니다.

예를 들면:

const arr = [1, 2, 3];
arr[0] = 10; // 가능
arr = [4, 5, 6]; // 오류, 재할당 불가!

const obj = { a: 1, b: 2 };
obj.a = 10; // 가능
obj = { a: 3, b: 4 }; // 오류, 재할당 불가!

위 예시에서 보시다시피, const로 선언한 객체 obj와 배열 arr의 내부 값 또는 속성은 변경할 수 있지만, 자체 재할당은 불가능합니다. 이 점을 기억하면 const 키워드의 사용에 있어 유용할 것입니다.

보다 자세한 설명을 원하시면, 관련 질문에 대한 유사한 답변도 확인해 보실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이선재님의 프로필 이미지
이선재

작성한 질문수

질문하기