ECMAScript-Einzeloperator

Einzelne Operatoren haben nur einen Parameter, nämlich das Objekt oder den Wert, das bearbeitet werden soll. Sie sind die einfachsten Operatoren in ECMAScript.

delete

Der delete-Operator löscht Referenzen auf zuvor definierte Objekteigenschaften oder Methoden. Zum Beispiel:

var o = new Object;
o.name = "David";
alert(o.name);	//ausgeben "David"
delete o.name;
alert(o.name);	// Ausgabe "undefined"

In diesem Beispiel wird die name-Attribut gelöscht, was bedeutet, dass die Referenz dazu gezwungen wird, auf undefined (d.h. den Wert eines nicht initialisierten Variablen) gesetzt zu werden.

Der delete-Operator kann keine von Entwicklern nicht definierten Attribute oder Methoden löschen. Zum Beispiel führt das folgende Codebeispiel zu einem Fehler:

delete o.toString;

Selbst wenn toString ein gültiger Methodenname ist, führt diese Zeile zu einem Fehler, da toString() ein ursprüngliches ECMAScript-Method ist und nicht von Entwicklern definiert wurde.

void

Der void-Operator gibt für jeden Wert undefined zurück. Dieser Operator wird normalerweise verwendet, um den Ausgabe von Werten zu vermeiden, die nicht ausgegeben werden sollten, z.B. beim Aufruf einer JavaScript-Funktion aus einem HTML-<a>-Element. Um dies korrekt zu tun, darf die Funktion keine gültigen Werte zurückgeben, da der Browser sonst die Seite leeren und nur das Ergebnis der Funktion anzeigen wird. Zum Beispiel:

<a href="javascript:window.open('about:blank')">Klicken Sie hier</a>

Fügen Sie diese Zeile in eine HTML-Seite ein und klicken Sie auf den Link, um zu sehen, dass "[object]" auf dem Bildschirm angezeigt wird.TIY

Das liegt daran, dass die window.open()-Methode eine Referenz auf das neu geöffnete Fenster zurückgibt. Anschließend wird dieses Objekt in eine anzuzeigende Zeichenkette umgewandelt.

Um dieses Effekt zu vermeiden, kann der void-Operator verwendet werden, um die window.open()-Funktion aufzurufen:

<a href="javascript:void(window.open('about:blank'))">Klicken Sie hier</a>

Dies führt dazu, dass der Rückgabewert der window.open()-Aufruf undefined ist, was kein gültiger Wert ist und nicht im Browserfenster angezeigt wird.

Hinweis:Denken Sie daran, dass Funktionen ohne Rückgabewert tatsächlich undefined zurückgeben.

Präinkrement/Prädekrement-Operator

Die beiden Operationen, die direkt aus C (und Java) entlehnt wurden, sind der Präinkrement- und Prädekrement-Operator.

Der Präinkrement-Operator ist eine Erhöhung um 1 im numerischen Wert, der in Form von zwei Pluszeichen vor der Variablen dargestellt wird (++):

var iNum = 10;
++iNum;

Die zweite Zeile erhöht iNum auf 11, was in der Tat äquivalent ist zu:

var iNum = 10;
iNum = iNum + 1;

Gleichzeitig ist der Prädekrement-Operator eine Verringerung um 1 im numerischen Wert, der in Form von zwei Minuszeichen vor der Variablen dargestellt wird (--):

var iNum = 10;
--iNum;

In diesem Beispiel wird der Wert von iNum in der zweiten Zeile auf 9 reduziert.

Bei der Verwendung von Präfix-Operatoren ist zu beachten, dass die Inkrement- und Dekrement-Operatoren vor der Berechnung des Ausdrucks auftreten. Betrachten Sie das folgende Beispiel:

var iNum = 10;
--iNum;
alert(iNum);	//gibt "9" aus
alert(--iNum);	//gibt "8" aus
alert(iNum);	//gibt "8" aus

Die zweite Zeile des Codes führt die Dekrement-Operation für iNum durch, die dritte Zeile zeigt das Ergebnis ("9"). Die vierte Zeile führt wieder die Dekrement-Operation für iNum durch, diesmal ist die Präfix-Dekrement-Operation und die Ausgabe in derselben Anweisung, das Ergebnis ist "8". Um zu beweisen, dass alle Dekrement-Operationen durchgeführt wurden, wird in der fünften Zeile noch einmal "8" ausgegeben.

In arithmetischen Ausdrücken ist die Priorität der Präfix-Inkrement- und Präfix-Dekrement-Operatoren gleich, daher müssen sie in der Reihenfolge von links nach rechts berechnet werden. Zum Beispiel:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = --iNum1 + ++iNum2;	//ergibt "22"
var iNum4 = iNum1 + iNum2;		//ergibt "22"

In den obigen Codes ist iNum3 gleich 22, da der Ausdruck berechnet werden muss 1 + 21. Die Variable iNum4 ist auch gleich 22 und ist ebenfalls 1 + 21.

Postive/Negativer Inkrement-Operator

Es gibt noch zwei Operatoren, die direkt von C (und Java) übernommen wurden, nämlich den postiven und negativen Inkrement-Operator.

Der positive Inkrement-Operator erhöht den Wert um 1, der Ausdruck ist in Form von zwei Pluszeichen hinter der Variablen (++) gegeben:

var iNum = 10;
iNum++;

Wie erwartet verringert der postive Dekrement-Operator den Wert um 1, der Ausdruck ist in Form von zwei Minuszeichen hinter der Variablen (--) gegeben:

var iNum = 10;
iNum--;

Die zweite Zeile des Codes reduziert den Wert von iNum auf 9.

Im Gegensatz zu Präfix-Operatoren werden Postfix-Operatoren erst nach der Berechnung des Ausdrucks, der sie enthält, inkrementiert oder dekrementiert. Betrachten wir das folgende Beispiel:

var iNum = 10;
iNum--;
alert(iNum);	//gibt "9" aus
alert(iNum--);	//gibt "9" aus
alert(iNum);	//gibt "8" aus

Ähnlich wie bei den Präfix-Operatoren, führt die zweite Zeile des Codes die Dekrement-Operation für iNum durch, die dritte Zeile zeigt das Ergebnis ("9"). Die vierte Zeile zeigt weiter den Wert von iNum, diesmal wird der Dekrement-Operator in derselben Anweisung angewendet. Da das Dekrement nach der Berechnung des Ausdrucks erfolgt, zeigt diese Anweisung die Zahl "9". Nach der Ausführung der fünften Zeile zeigt die alert-Funktion "8", da nach der Ausführung der vierten Zeile und vor der Ausführung der fünften Zeile die postive Dekrement-Operation durchgeführt wurde.

In arithmetischen Ausdrücken ist die Priorität der postiven und negativen Operator gleichermaßen hoch, daher müssen sie in der Reihenfolge von links nach rechts berechnet werden. Zum Beispiel:

var iNum1 = 2;
var iNum2 = 20;
var iNum3 = iNum1-- + iNum2++;	//ergibt "22"
var iNum4 = iNum1 + iNum2;		//ergibt "22"

Im obigen Code ist iNum3 gleich 22, weil der Ausdruck 2 + 20 berechnet werden muss. Die Variable iNum4 ist auch gleich 22, aber sie berechnet 1 + 21, weil die Inkrement- und Dekrementoperationen nach der Zuweisung an iNum3 erfolgen.

Einzelerkennungsoperator und Einzelerkennungsoperator

Die meisten Menschen sind mit dem Einzelerkennungsoperator und dem Einzelerkennungsoperator vertraut, ihre Verwendung in ECMAScript ist ähnlich wie die, die Sie in der Mathematik in der Schule gelernt haben.

Der Einzelerkennungsoperator hat im Wesentlichen keinen Einfluss auf Zahlen:

var iNum = 20;
iNum = +iNum;
alert(iNum);	// Ausgabe "20"

Dieser Code wendet den Einzelerkennungsoperator auf die Zahl 20 an und gibt immer noch 20 zurück.

Obwohl der Einzelerkennungsoperator auf Zahlen keine Wirkung hat, hat er auf Strings interessante Effekte und wandelt Strings in Zahlen um.

var sNum = "20";
alert(typeof sNum);	// Ausgabe "string"
var iNum = +sNum;
alert(typeof iNum);	// Ausgabe "number"

Dieser Code wandelt das String "20" in eine echte Zahl um. Wenn der Einzelerkennungsoperator auf Strings angewendet wird, berechnet er die Strings ähnlich wie parseInt(), der Hauptunterschied ist, dass der Einzelerkennungsoperator nur Strings in Dezimalwerte umwandeln kann, die mit "0x" beginnen (was Hexadezimalzahlen darstellt). Daher wird "010" immer in 10 umgewandelt, während "0xB" in 11 umgewandelt wird.

Andererseits ist der Einzelerkennungsoperator das Negieren eines Wertes (z.B. 20 in -20 umwandeln):

var iNum = 20;
iNum = -iNum;
alert(iNum);	// Ausgabe "-20"

Der Einzelerkennungsoperator behandelt Strings ähnlich wie der Einzelerkennungsoperator, er wandelt Strings auch in近似e Zahlen um und negiert diesen Wert. Zum Beispiel:

var sNum = "20";
alert(typeof sNum);	// Ausgabe "string"
var iNum = -sNum;
alert(iNum);		// Ausgabe "-20"
alert(typeof iNum);	// Ausgabe "number"

Im obigen Code wird der Einzelerkennungsoperator das String "-20" in -20 umwandeln (-Der Einzelerkennungsoperator behandelt Hexadezimal- und Dezimalzahlen auf ähnliche Weise wie der Einzelerkennungsoperator, nur dass er auch den Wert negiert).