Разбор кодаvar a = [];
var b = [];
var c = [];
a[0] = 1;
b[0] = 1;
for (var i = 0; i < 4; ++i) {
c = a;
for (var j = 0; j < a.length; ++j) {
a[j] = a[j] + b[j]; //a[j] = c[j] = a[j] + b[j];
}
b = c; //b = c = a
console.log(c); // выводит [2], потому что c[0] = a[0] = b[0] + a[0] = 1 + 1 = 2
}
Сложные типы, в отличие от простых, передаются по ссылке.
var a = "text", b = a;
b = "Other text";
console.log(a, b); //text, Other text
var arr = [], brr = arr;
arr.push("item");
console.log(a[0], b[0]); //item, item
Чтобы скопировать массив, создав при этом новый объект, используйте
array.slice()
.
А вообще,
вот решение вашей задачи.
Кстати, интересная по поводу него заметка: