배열과 객체에서
let person ={name:"son"} let newPerson =person newPerson.name = "Haru" console.log(person.name)
위와 같은 코드에서 마지막 콘솔로 찍은 부분은 "Haru" 이다
이는 배열과 객체는 주소값을 복사하기 때문이다
배열에서도
let hobbies =["Soccer","BasketBall"] let coppiedHobbies = hobbies coppiedHobbies.push('Game') console.log(hobbies[2])
hobbies의 2번 요소가 없는것처럼 보이지만 coppiedHobbies를 변경하면 같은 주소값을 가진
원본배열도 변하기에 'Game'이 2번요소로 들어왔다
이와 같은 현상을 해결하기 위한 방법으로는 무엇이 있을까?
배열에서는 slice()와 스프레드를 사용하여 해결할 수 있다
let hobbies =["Soccer","BasketBall"] let coppiedHobbies = hobbies.slice()let hobbies =["Soccer","BasketBall"] let coppiedHobbies = [...hobbies]
객체에서는 Object.assign()와 스프레드를 사용하여 해결할 수 있다
let person ={name:"son"} let copiedPerson = Object.assign({},person)let person ={name:"son"} let copiedPerson = {...person}