Как происходит копирование массивов в JavaScript? [дубликат]

169
28 июня 2017, 01:16

На данный вопрос уже ответили:

  • Взаимосвязь массивов внутри переменных 1 ответ
var x = new Array(0);
var y = new  Array(0);
x = y;
y.push(3);
console.log(x);

x = [3]; разве так должно быть?

Answer 1

Да, потому-что массив в js это объект, а объекты присваиваются по ссылке, а не по значению. Скопировать значение объекта можно с помощью Object.assign:

var x =[1]; 
var y =[2]; 
Object.assign(x,y); 
y.push(3); 
console.log(x,y);

Answer 2
x = y;

Теперь массив записанный в х был уничтожен сборщиком мусора, т.к. на него не осталось ссылки. Остались две переменные x и y которые указывают на один и тот же массив, т.к. в JS массивы передаются по ссылке. Далее думаю понятно.

READ ALSO
Как улучшить функционал табов?

Как улучшить функционал табов?

Хочу сделать выдачу контента с помощью табов https://jqueryuicom/tabs/ Интересует, можно ли создавать новые табы на лету по клику с другого таба? Типа...

164
Функция на каждый элемент масива [дубликат]

Функция на каждый элемент масива [дубликат]

На данный вопрос уже ответили:

178
Как вывеcти sum () в ряд вместе с user_id

Как вывеcти sum () в ряд вместе с user_id

Хочу вывести общее количество просмотров у каждого пользователя (просмотров его постов)Делаю запрос в БД, все показывает

168