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] 

fiddle

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

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -