hro19 / Typescript_Katsutadai

Typescript workshop in 勝田台
0 stars 0 forks source link

スプレッド構文とただの代入の違い #12

Open hro19 opened 1 year ago

hro19 commented 1 year ago
const person = {
    name:"Max",
    age:33,
}

const Aperson = person;

const Bperson = {
    ...person
}

console.log(person);
console.log(Aperson);
console.log(Bperson);

Aperson.age = 48;

console.log(person);
console.log(Aperson);
console.log(Bperson);

Aperson.age = 48をしたことによって、Apersonとpersonどちらのageにも48が代入されました。一方でBpersonのageは変化なしです。

Aperson は person オブジェクトそのものを参照しているため、変更が反映されますが、Bperson はスプレッド演算子を使ってオブジェクトの中身をコピーしているため、元のオブジェクトとは独立しています。