By default JavaScript arrays are passed by reference. See the code below. Notice that when a value in the 'firstArray' is changed, the corresponding value in 'secondArray' is also changed.
var firstArray = ['first','second','third'];
var secondArray = firstArray;
firstArray[1] = 'second most';
for (var i = 0; i < firstArray.length; i++)
{
console.log(secondArray[i]);
}
/* Output
first
second most
third
*/
To overcome this issue you need to use the 'slice' method. This will pass the 'firstArray' to the 'secondArray' by value. See, in the output, that although a value in the 'firstArray' has changed, this hasn't affected the values within the 'secondArray'.
var firstArray = ['first','second','third'];
var secondArray = firstArray.slice();
firstArray[1] = 'second most';
for (var i = 0; i < firstArray.length; i++)
{
console.log(secondArray[i]);
}
/* Output
first
second
third
*/
No comments:
Post a Comment