프로그래밍과 데이터 in JavaScript자료형 심화기본형과 참조형

Q

참조형(배열)의 주소값 공유

조회 736

좋아요 0

2022년 7월 14일




댓글 3

2022년 11월 23일
직접적으로 값을 넣어주게 되면, 그 값에 대한 주소를 변수에 할당하게 되요. [4]라는 값을 y에 부여하니, y는 [4]의 주소로 연결됩니다.
2022년 11월 23일
a=2, b=a, 하면 // 2값의 주소를 a가 받게 되고, b=a 하면 b가 다시 a가 갖고 있는 2값의 주소도 얻게 됩니다. 그런데, 다시 실제적인 값인 3을 b에게 할당하면(b=3) b는 3값의 주소를 갖게 됩니다. a는 변한 것이 없으니, 2값의 주소를 갖게 되고요.
2022년 11월 23일
참조형 데이터에서 가장 문제가 되는 것은... 이런 경우입니다. // a = [3], b=a, b.append(4) 이렇게 하면 b=[3,4]가 되는데.. 이때, a값도 덩달아 변해서 [3,4]가 됩니다. // 지금 b에 append를 한것은 전혀 새로운 값을 b에게 할당한 것이 아니라, b가 갖고 있는 값([3])에 대한 주소로, 4라는 숫자를 추가한 것입니다. 그래서 b가 참조하는 주소는 동일합니다. 그런데, a도 동일한 주소를 참조하기 때문에, 이럴 경우 b값이 변하면 a값도 같이 변합니다. // 그래서 이걸 방지하기 위해 '참조형데이터'는 조심하라고 강조하는 것이고, a값과 동일한 값의 b를 얻으려면, b=a.slice(); 식으로 a값을 복사한 값(새롭게 형성된 값)을 b에 할당하면, a와 b가 참조하는 주소가 달라져서, b의 값이 변해도 a는 영향을 받지 않습니다.
A
2개의 답변이 있어요
커뮤니티 파트너 채택



2022년 7월 14일



2022년 8월 22일

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇