В следующем коде я ожидаю, что будет создан 2-мерный массив, предварительно заполненный нулями. Проблема, которую я получаю, заключается в том, что x[0][3] = 2
, похоже, происходит слишком быстро, поэтому к моменту входа в консоль внутри функции массив уже имеет измененное значение. Кажется, я не могу это исправить, даже с таймаутами. Что происходит?Почему этот 2d-массив создает неожиданные результаты?
function test(size) {
var row = [];
var return_me = [];
for (var i=0; i < size; i++) { row.push(0); }
for (var j=0; j < size; j++) { return_me.push(row.slice()); }
console.log("1:");
console.log(return_me);
return return_me;
}
var x = null;
console.log("0:");
console.log(x);
x = test(5);
console.log("2:");
console.log(x);
x[0][3] = 2;
console.log("3:");
console.log(x);
Неожиданный результат приходит на «1:» на выходе, где я получаю:
0: 0
1: 0
2: 0
3: 2
4: 0
Включен ли фактический _error_ или журнал просто выглядит неожиданным? – Xufox
Какие результаты журнала вы обнаружите неожиданными? –
Извините, это вводит в заблуждение: нет ошибок. Я уточняю вопрос с более конкретными особенностями, чтобы быть более ясным. –