1. Nach Wert übergeben (nach Wert)
Der Wert der Variablen wird kopiert und hat nichts mit dem ursprünglichen Wert zu tun. Das heißt, selbst wenn der neue Wert geändert wird, ändert sich der ursprüngliche Wert nicht. In JavaScript werden Basistypen als Wert übergeben.
Kopieren Sie den Codecode wie folgt:
Funktion testPassValue()
{
var m=1;
var n=2;
//Kopiere die Werte von m und n und übergebe sie an passValue
passValue(m,n);
Alert(m); //wird der ursprüngliche Wert sein
}
Funktion passValue(a,b)
{
a = a+b; //Ändere den Wert von a, hier ist a nur eine Kopie des Originalwerts
Warnung(a);
}
Ausgabeergebnis:
3
1
2. Durch Verweis.
Eine Kopie der Referenz selbst wird an die Funktion übergeben. Das Objekt, auf das die Referenz zeigt, wird nicht kopiert und übergeben (dasselbe gilt in der Funktion, wenn der Wert des Objektattributs geändert wird). Referenzpunkte verweisen auf dasselbe Objekt. Daher erfolgt der Zugriff auf den geänderten Wert über die ursprüngliche Referenz.
Wenn Sie den Verweis jedoch nur auf ein neues Objekt in der Funktion verweisen, wird der Wert des ursprünglichen Objekts nicht geändert, sondern nur der kopierte Verweis.
Kopieren Sie den Codecode wie folgt:
Funktion testPassValue()
{
var date = neues Datum(2006,02,27);
alarm(date.getDate()); //Die Ausgabe ist 27
//Kopieren Sie die Datumsreferenz selbst und übergeben Sie sie an passReference. Beachten Sie, dass das Objekt, auf das das Datum zeigt, nicht kopiert wurde.
passReference(date);
alarm(date.getDate()); //Die Ausgabe ist 12
//Das Gleiche wie oben
changeReference(date);
alarm(date.getDate()); //Die Ausgabe ist immer noch 12
}
Funktion passReference(da)
{
// Da da und die ursprüngliche Referenz auf dasselbe Objekt außerhalb der Funktion verweisen, wird über die ursprüngliche Referenz auf den Datumsattributwert des Objekts zugegriffen, der der geänderte Wert ist.
da.setDate(12);
}
Funktion changeReference(da)
{
//Zu diesem Zeitpunkt ist die da-Referenz tatsächlich eine Kopie der ursprünglichen Referenz. Eine Neuzuweisung der Referenz selbst hat keine Auswirkungen auf die ursprüngliche Referenz.
da= neues Datum(2007,05,11);
// Richten Sie die da-Referenz auf ein neues Objekt. Zu diesem Zeitpunkt zeigt die ursprüngliche Referenz immer noch auf das ursprüngliche Objekt.
alarm(da.getDate()); // Die Ausgabe ist 11
}
3 spezielle Saiten
In JavaScript wird String auch als Referenz übergeben. In js gibt es nur die charAt-Methode, aber keine entsprechende Änderungsmethode. Sie ist dieselbe wie String in Java und hat Unveränderlichkeit.
Kopieren Sie den Codecode wie folgt:
var s1 = "Hallo";
var s2 = „Hölle“ + „o“;
wenn (s1 == s2)
warning("s1 = s2"); //Wird dieser Satz ausgeführt? Leute, die mit Java vertraut sind, denken vielleicht, dass er nicht ausgeführt wird (ich stehe diesem Satz ziemlich kritisch gegenüber, er wird auch in Java ausgeführt!). in Java == vergleicht tatsächlich, ob die Werte gleich sind, also wird dieser Satz ausgeführt. Für andere Object ==-Vergleiche ist es jedoch dasselbe wie in Java.