const로 들어온 인자를 선언하면 새로 선언하는 것과 동일한 것 같다...?

헷갈려서 한번 찾아보았다.

const flower = [{ name: 'Lily', color: 'white' }] 
const clone = [...flower] 
clone[0].name = 'Camellia' 
console.log(flower) // [{name: "Camellia", color: "white"}] 
console.log(clone) // [{name: "Camellia", color: "white"}]

const flower = { name: 'Lily', color: 'white' } 
const clone = { ...flower } 
clone.name = 'Camellia' 
console.log(flower) 
// {name: "Lily", color: "white"} 
console.log(clone)
// {name: "Camellia", color: "white"}

위처럼 하면 객체 자체의 참조만 복사되어 shallow copy가 되는 반면, 아래처럼 객체 요소들을 다시 재생성 하는 경우에는 deep copy가 되는 것을 알 수 있다.