Javascript - 값복사와 참조복사

1. 기본 자료형(숫자,Bool,문자열) - 값 복사
  • 값 복사(깊은 복사) : 할당된 데이터 값을 복사
  • 기본 자료형은 가볍기 때문에 실질적인 데이터 값을 복사
  • clone
var originalValue = 10;
var newValue = originalValue; // newValue = 10

originalValue=273;  //originalValue 값 변경

document.write(originalValue);	// originalValue = 273
document.write(newValue);	// newValue = 10
2. 특수자료형 (객체,배열, …) - 참조 복사
  • 참조복사 : 자료형에 할당된 주소값(참조)을 복사
  • 배열 내부에 있는 메모리 주소가 복사됨`
  • 복사된 배열의 값이 동일하게 변경됨
var originalArray = [1,2,3,4];  //주소값 : 0x10
var newArray = originalArray;   //주소값 : 0x10

originalArray[0] = 273; // 원본 배열의 0번째 값 변경

document.write(originalArray);
// originalArray = [273,2,3,4]

document.write(newArray);
// newArray = [273,2,3,4]
3. 배열을 값복사로 사용하고 싶을 때
  • 새로운 배열을 생성하여 원본 배열의 데이터 값을 복사
  • 주소값이 다르기 때문에 영향을 받지 않음.
var orgArr=[1,2,3,4];
var newArr=[];	//새로운 배열 생성

for(var i=0; i<orgArr.length; i++){
  newArr[i] = orgArr[i];
}	//배열의 값 복사

orgArr[0] = 223; // 원본 배열의 0번째 값 변경

document.write(orgArr);	//orgArr = [223,2,3,4]
document.write(newArr);	//newArr = [1,2,3,4]

See the Pen Javascript : 값복사와 참조복사 by Cathy Go Eun Woo (@cathy-go-eun-woo) on CodePen.

Comments