Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.

Kopieren, Übergeben und Vergleichen von Daten (JavaScript)

Es hängt von dem Datentyp ab, wie Daten in JavaScript bearbeitet werden.

Zahlen und boolesche Werte (true und false) werden nach Wert kopiert, übergeben und verglichen. Beim Kopieren oder Übergeben nach Wert belegen Sie Speicherplatz auf dem Computer und kopieren den Wert des Originals dorthin. Wenn Sie dann das Original ändern, ist die Kopie davon nicht betroffen (und umgekehrt), da es sich um zwei getrennte Entitäten handelt.

Objekte, Arrays und Funktionen werden nach Verweis kopiert, übergeben und verglichen. Beim Kopieren oder Übergeben nach Verweis erstellen Sie im Grunde einen Zeiger auf das ursprüngliche Element und verwenden den Zeiger, als ob er eine Kopie wäre. Wenn Sie dann das ursprüngliche Element ändern, werden sowohl das Original als auch die Kopie (und umgekehrt) geändert. Tatsächlich ist jedoch nur eine Entität vorhanden, denn die Kopie ist keine wirkliche Kopie, sondern nur ein Verweis auf die Daten.

Beim Vergleichen nach Verweis müssen die beiden Variablen exakt auf die gleiche Entität verweisen, damit der Vergleich erfolgreich ist. Beispielsweise sind zwei unterschiedliche Array-Objekte bei einem Vergleich immer ungleich, auch wenn sie dieselben Elemente enthalten. Eine der Variablen muss ein Verweis auf die andere Variable sein, damit der Vergleich erfolgreich durchgeführt werden kann. Vergleichen Sie die Ergebnisse der toString()-Methode, um zu prüfen, ob zwei Arrays dieselben Elemente enthalten.

Zeichenfolgen werden nach Verweis kopiert und übergeben, aber nach Wert verglichen. Zwei String-Objekte (erstellt mit new String ("xyz")), werden nach Verweis miteinander verglichen, aber wenn einer oder beide der Werte ein Zeichenfolgenwert ist, werden sie als Wert miteinander verglichen.

Hinweis Hinweis

Der ASCII- und der ANSI-Zeichensatz sind so aufgebaut, dass Großbuchstaben vor Kleinbuchstaben rangieren. So ist bei einem Vergleich "Zoo" kleiner als "adler". Sie können toUpperCase() oder toLowerCase() für beide Zeichenfolgen aufrufen, wenn Sie einen Vergleich ohne Berücksichtigung von Groß- und Kleinschreibung durchführen möchten.

Wenn Sie einen Parameter als Wert an eine Funktion übergeben, wird eine separate Kopie dieses Parameters erstellt, die nur innerhalb der Funktion vorhanden ist. Objekte und Arrays werden zwar als Verweis übergeben, aber wenn Sie sie direkt mit einem neuen Wert in der Funktion überschreiben, dann wird der neue Wert nicht außerhalb der Funktion widergespiegelt. Nur Änderungen an den Eigenschaften von Objekten oder an Elementen von Arrays sind außerhalb der Funktion sichtbar.

Beispiel (mit dem Internet Explorer-Objektmodell):

// This clobbers (over-writes) its parameter, so the change
// is not reflected in the calling code.
function Clobber(param) 
{
    // clobber the parameter; this will not be seen in 
    // the calling code
    param = new Object();
    param.message = "This will not work";
}

// This modifies a property of the parameter, which
// can be seen in the calling code.
function Update(param)
{
    // Modify the property of the object; this will be seen
    // in the calling code.
    param.message = "I was changed";
}

// Create an object, and give it a property.
var obj = new Object();
obj.message = "This is the original";

// Call Clobber, and print obj.message. Note that it hasn't changed.
Clobber(obj);
window.alert(obj.message); // Still displays "This is the original".

// Call Update, and print obj.message. Note that is has changed.
Update(obj);
window.alert(obj.message); // Displays "I was changed".

Wenn Sie einen Test nach Wert durchführen, werden zwei unterschiedliche Elemente miteinander verglichen, um festzustellen, ob sie gleich sind. In der Regel wird dieser Vergleich byteweise durchgeführt. Wenn Sie einen Test nach Verweis durchführen, prüfen Sie, ob zwei Elemente Zeiger auf ein einzelnes ursprüngliches Element sind. Ist dies der Fall, sind die Elemente gleich. Andernfalls sind sie nicht gleich, selbst wenn sie die gleichen Werte enthalten.

Das Kopieren und Übergeben von Zeichenfolgen nach Verweis spart Speicherplatz. Da Zeichenfolgen nach dem Erstellen nicht änderbar sind, können Sie nach Wert verglichen werden. Dadurch können Sie überprüfen, ob zwei Zeichenfolgen denselben Inhalt aufweisen, selbst wenn eine vollständig separat von der anderen generiert wurde.

Community-Beiträge

Anzeigen:
© 2014 Microsoft