Глубокое копирование:

Когда мы создаем копию переменной, если мы вносим изменения в новую копию переменной, и это не влияет на исходное значение переменной.

Поверхностное копирование:

Когда мы создаем копию переменной, если мы вносим изменения в новую копию переменной и это влияет на исходное значение переменной.

const person =
{
name : 'Harry',
address : {
country: 'nepal',
city: 'butwal'
}
}
// const updated ={name: person.name, address: {...person.address}}
const updated = {
       ...person,
       address :{
       ...person.address
        }
}
updated.name = "Bijay"
updated.address.city= 'kathamandu'
console.log(person)
console.log(updated)
//person
{name : "Harry"
address: {country: 'nepal', city: 'butwal'}
}
//updated
{name : "Bijay"
address: {country: 'nepal', city: 'Kathmandu'}
}