Вказівник, копіювання масивів

У змінній зберігається не сам масив, а вказівник на комірку пам'яті, де починається масив.

Проведіть експеремент:

let a = [1, 2, 3],
    b = a;
a[1] = 'а вже не два!';
console.log(b);

Можна створити рекурсивний масив, just for fun, практичного застосування такі масиви не мають, в багатьох випадках можуть викликати вічний цикл і підвісити браузер:

let mas = [];
mas[0] = mas;
console.dir(mas);

В функції масиви також передаються вказівником:

let a = [1, 2, 3],
    b = 1;
fun(a, b);
console.log('end of fun:', a);
console.log('end of fun:', b);

function fun(x, y) {
  x[0] = x[0] + 13;
  y = y + 13;
  console.log('fun:', x);
  console.log('fun:', y);
}

Таким чином, щоб зкопіювати масив - треба копіювати його поелементно:

let a = [1, 2, 3],
    b = [];

// перший варіант:
for (let i = 0; i < a.length; i++) {
  b[i] = a[i];
}

// другий варіант:
a.forEach(function(e){ b.push(e); });

Другий варіант детальніше розглянемо далі.

Скопіюйте двовимірний масив з попередньої підтеми, добавляючи до кожного елемента одиницю за допомогою унарного оператора. Результат виведіть в консоль.