Javascript Eval overwriting variable -
don't understand why code below overwriting var arr. appreciated.
var arr = [1,2,3] var string = "function swap(arr) { var newarr = arr; var temp = arr[0]; newarr[0] = arr[arr.length-1]; newarr[arr.length-1] = temp; return newarr }" var test = eval("[" + string + "]")[0]; test(arr); console.log(arr); //this outputs [3,2,1] test(arr); console.log(arr); //this outputs [1,2,3]
thanks
because in javascript, objects pass reference value , arrays objects. eval irrelevant here. here code producing same issue without eval:
var arr = [1,2,3]; var arr2 = arr; // sets reference arr2[1] = 3; // changes arr arr[0] = 3; // changes arr2 arr; // [3, 3, 3] arr2; // [3, 3, 3]
Comments
Post a Comment