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
Post a Comment