**Tell us what’s happening:**

I understand for the challenge I need to add row = in the first loop to reinitialize it. What I don’t get is why before fixing the matrix it is calculating to:

[ [ 0, 0, 0, 0, 0, 0 ],

[ 0, 0, 0, 0, 0, 0 ],

[ 0, 0, 0, 0, 0, 0 ] ]

If I’m understanding the code snippet and how push() works correctly, **newArray.push(row)** is being invoked 3 times, in the outer loop and each time **row** is being pushed into **newArray**. The first time it would push [0,0] then, [0,0,0,0], and last [0,0,0,0,0,0] so why isn’t the output:

[ [0,0], [0,0,0,0 ], [0,0,0,0,0,0]]

Thanks in advance!

```
function zeroArray(m, n) {
// Creates a 2-D array with m rows and n columns of zeroes
let newArray = [];
let row = [];
for (let i = 0; i < m; i++) {
// Adds the m-th row into newArray
for (let j = 0; j < n; j++) {
// Pushes n zeroes into the current row to create the columns
row.push(0);
}
// Pushes the current row, which now has n zeroes in it, to the array
newArray.push(row);
}
return newArray;
}
let matrix = zeroArray(3, 2);
console.log(matrix);
```

**Your browser information:**

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36`

.

**Challenge:** Use Caution When Reinitializing Variables Inside a Loop

**Link to the challenge:**