2016-11-11 3 views
0

Ich arbeite an einem größeren Projekt, und ich habe Probleme mit Arrays aufgetreten, unten demonstriert.JS-Array in Funktion überschrieben

var x = new Array(); 
x = [5, 2]; 
function doStuff(a){ 
    a[0]++; 
    console.log(a);//Prints [6, 2] 
} 
doStuff(x); 
console.log(x);//Prints [6, 2] when it should print [5, 2] 

Wie könnte ich Dinge mit einem Array an eine Funktion übergeben, ohne das Original zu ändern?

+1

Sie würden explizit müssen eine Kopie machen: 'doStuff (x.Slice (0)); ' – Pointy

Antwort

0

Was Sie an doStuff übergeben, ist eine Referenz an das Array. Sie übergeben die Daten nicht wirklich.

Du wirst explizit kopieren das Array haben, um die Quelle zu ändern:

var x = [5, 2];   // No need to use the `Array` constructor. 
 

 
function doStuff(a) { 
 
    var x = a.slice(0); // Copy the array. 
 
    x[0]++; 
 
    console.log(x);  // Prints [6, 2] 
 
} 
 
doStuff(x); 
 
console.log(x);   // Prints [5, 2]

Verwandte Themen