Почему при изменении переменной которой присвоен элемент массива, меняется и сам элемент в массиве? JS
'use strict';
const games = [{
id: 1,
title: 'Mario'
},
{
id: 2,
title: 'Zelda'
},
{
id: 3,
title: 'Donkey Kong'
}
];
let test = games[0];
test.id = 22222
alert( JSON.stringify(games));
games.splice(0, 1);
alert( JSON.stringify(games));
alert( JSON.stringify(test));
Не могу понять:
Почему когда я меняю значения переменой меняется и значения id в массиве
Почему тогда когда я удаляю значения в массиве оно не удаляться с переменой??
Ответы (1 шт):
Автор решения: Doofy
→ Ссылка
Потому что в данном случае ты работаешь со ссылками на объекты, ты меняешь не переменную, а свойство объекта, а переменная как ссылалась на один объект, так и продолжила ссылаться.
С удалением то же самое. Удалил ссылку из массива, а ссылка в переменной осталась.
'use strict';
const games = [
{ id: 1, title: 'Mario' },
{ id: 2, title: 'Zelda' },
{ id: 3, title: 'Donkey Kong' }
];
let test = Object.assign({}, games[0]);
test.id = 22222;
console.log( JSON.stringify(games) );
games.splice(0, 1);
console.log( JSON.stringify(games) );
console.log( JSON.stringify(test) );