Внутреннее устройство массива

148
29 января 2018, 07:24

в функцию массив не копируется, а передается ссылка.... Объясните это пожалуйста на примерах с примитивами и массивом в функциях...

Answer 1

Передадим в функцию массив и изменим переданный аргумент. В итоге изменится и исходный массив, так как это лишь ссылка на исходный массив.

const func = arr => { 
  arr.push(222); 
  console.log(array); 
}; 
 
const array = [ 111 ]; 
func(array);

Передадим в функцию переменную с булевым значением и изменим переданный аргумент. В итоге исходная переменная не изменится, так как аргумент лишь принимает значение и по сути это новая переменная.

const func2 = b => { 
  b = true; 
  console.log(bool); 
} 
 
const bool = false; 
func2(bool);

Answer 2

Объекты в JS всегда передаются по ссылке, а простые типы, по значению. Массив – это разновидность объекта.

Очень хорошо данная тема (с наглядными примерами) рассматривается здесь.

Скопировать массив вы можете в самой функции методом slice:

function func(arr) {
  let tempArr = arr.slice(0, arr.length - 1); //копирует все элементы массива
  //тут что то делаем с tempArr
}
READ ALSO
Uncaught TypeError: Cannot set property 'drawSquare' of undefined(Пишу змейку на js помогите пожалуйста)

Uncaught TypeError: Cannot set property 'drawSquare' of undefined(Пишу змейку на js помогите пожалуйста)

Помогите с ошибкой Uncaught TypeError: Cannot set property 'drawSquare' of undefined

201
Как сделать поиск mysql?

Как сделать поиск mysql?

У меня есть столбец 'region' В нем записаны: Москва, Санкт-Петербург, Омск, Сочи, Пермь

280
php mysql перенос time() в timestamp

php mysql перенос time() в timestamp

здравствуйте, в бд использовал до этого момента time() для установления значения времени (к примеру дата добавление новости), возможно ли теперь...

236
Checkbox и sql?

Checkbox и sql?

Здравствуйте, не могу понять, при выставлении галочки, запись в бд не идетВот кусочек кода, если нужен полный, скину

204