JavaScript/JavaScript기초

[Javascript] 배열과 객체의 Copy

박남수 2021. 8. 27. 11:32

배열과 객체의 Copy

하나의 배열 또는 객체를 다른 변수에 copy 하고 싶을 때 변수에 그냥 할당할 경우 아래와 같은 상황이 발생

let obj = {name:"hong"}
let obj2 = obj

let arr = ['a','b','c']
let arr2 = arr

obj.name = 'park'
arr[0] = 'd'

console.log(obj2)
console.log(arr2)

 

obj 와 arr의 값만 변경했는데 obj2와 arr2의 값이 같이바뀜

이러한 현상이 발생하는 이유는 객체와 배열의 데이터만 복사한게 아니라 객체와 배열 그 자체를 copy한것이기 때문에 서로 영향을 받는것임.

 

데이터만 copy하고 싶을경우 객체는 {...변수명} , 배열은 [...변수명] 을 통해 변수 그 자체가 아닌 데이터만 copy해올 수 있음

let obj = {name:"hong"}
let obj2 = {...obj} //obj의 데이터만 복사

let arr = ['a','b','c']
let arr2 = [...arr] // arr의 데이터만 복사

obj.name = 'park'
arr[0] = 'd'

console.log(obj2)
console.log(arr2)

 

위와 다르게 복사된 변수의 값은 변경되지 않은것을 볼 수 있음