Why does this JavaScript code make the entire array point to the same object? -


in book javascript: parts, there code on page 64:

for (i = 0; < n; += 1) {  my_array[i] = []; } // note: array.dim(n, []) not work here. // each element reference same // array, bad. 

why each element in array point same object? seems me line my_array[i] = []; reevaluated each loop, causing new empty object created.

what're rules of getting reference same object versus new one? how make different empty array every loop?

edit: reading people's responses, read paragraph wrong. answers!

this loop new reference each time. run it, mutate 1 of arrays , you'll see 1 changes.

the problem more array.dim method. imagine it's implemented this:

array.dim = function(n, init) {   var arr = [];   var i;    (i = 0; < n; += 1) {     arr[i] = init;   }    return arr; } 

using literal array syntax create new reference array, method uses same reference populate each value of resulting array.

it might easiest compare 2 way.

var init = []; (i = 0; < n; += 1) {   arr[i] = init; } 

the first approach creates 1 array uses populate each element.

for (i = 0; < n; += 1) {   arr[i] = []; } 

the second approach creates new reference each iteration of loop.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -