Was passiert mit dem Wert einer Variablen, die als Argument an eine Funktion übergeben und innerhalb der Funktion verändert wird?
Beispiel
var n = 42,
w = true,
s = "Hallo",
arr = [1,2,3],
pnt = {x:25, y:12};
function f(a,b,c,d,e) {
a = 43;
b = false;
c = "Helau";
d[0] = -1;
d.push(4);
e.x = 24;
e.z = 0;
}
f(n,w,s,arr,pnt);
alert(n); // 42
alert(w); // true
alert(s); // "Hallo"
alert(d); // -1,2,3,4
alert(pnt.x+","+pnt.y+","+pnt.z); // 24,12,0
- Der Wert der Datentypen Number, Boolean und String wird als Kopie (by value) übergeben. Eine Änderung innerhalb der Funktion hat daher keine Auswirkung auf den Wert der originalen Variablen.
- Alle anderen Datentypen – insbesondere Array und Object – werden als Original übergeben (by reference). Eine Änderung innerhalb der Funktion wirkt sich also bleibend auf den Wert der Variablen aus.