Michael H.: 1. Array richtet sich nach dem 2. Array

Beitrag lesen

Hallo,

Erst mal das Script zu meinem Problem:

var ar1 = new Array(1,2,3,4);

var ar2 = ar1;

while (ar2.length) {
  ar2.shift();
  alert(ar1.length+"-"+ar2.length);
}


>   
> Die Schleife wird nun 4x durchlaufen. Es soll sich eigentlich nur das 2. Array ändern. Allerdings ändert sich ar1 ebenso wie ar2.  
  

>   
> Warum ändert die Funktion shift denn auch das erste Array?  
> Ich will ar2 doch nur die Werte von ar1 zuweisen.  
>   
> Vielen Dank für Hilfe,  
> Dodwin  
  
Soweit ich weiß ist das bei JS anders als bei anderen Programmiersprachen (ich weiß: Scriptsprache...scheiß drauf). Auf gut Deutsch: JavaScript übergibt bei einer Zuweisung immer Referenzen (oder wenn du aus der C-Welt kommst: Pointer), es macht keine Kopie der Variable (was du ja eigentlich wolltest). Soviel mal zum WARUM. Das WIE LÖSE ICH DAS kann ich leider auch grad nix sagen, hab ich noch nie gebraucht...  
  
Aber vielleicht gibt dir das schon mal die richtige Denkrichtung...  
  
Viel Erfolg,  
Michael