Читать книгу JavaScript – Das Handbuch für die Praxis - David Flanagan - Страница 89
4.8.2Unäre arithmetische Operatoren
ОглавлениеUnäre Operatoren modifizieren den Wert eines einzelnen Operanden, um einen neuen Wert hervorzubringen. In JavaScript haben alle unären Operatoren einen hohen Vorrang und sind rechtsassoziativ. Die arithmetischen unären Operatoren (+, -, ++ und --) wandeln alle ihre einzigen Operanden bei Bedarf in eine Zahl um. Man sollte im Hinterkopf behalten, dass + und - sowohl als unäre als auch als binäre Operatoren verwendet werden.
Es gibt die folgenden unären arithmetischen Operatoren:
Unäres Plus (+)
Der unäre arithmetische Operator wandelt seinen Operanden in eine Zahl (oder in NaN) um und gibt diesen umgewandelten Wert zurück. Wird er auf einem Operanden verwendet, der bereits eine Zahl ist, wird keine Aktion durchgeführt. Dieser Operator darf nicht mit BigInt-Werten verwendet werden, da diese nicht in reguläre Zahlen konvertiert werden können.
Unäres Minus (-)
Wenn - als unärer Operator verwendet wird, wandelt er seinen Operanden gegebenenfalls in eine Zahl um und ändert dann das Vorzeichen des Ergebnisses.
Inkrement (++)
Der ++-Operator inkrementiert seinen einzigen Operanden. Der Operand muss ein Lvalue sein (eine Variable, ein Array-Element oder eine Objekteigenschaft). Der Operator wandelt seinen Operanden bei Bedarf in eine Zahl um, fügt dieser 1 hinzu und weist den inkrementierten Wert wieder der Variablen, dem Element oder der Eigenschaft zu.
Der Rückgabewert des ++-Operators ist von seiner Stellung in Bezug auf den Operanden abhängig. Steht er vor seinem Operanden – man spricht von einem Präinkrement –, inkrementiert er den Wert und wird dann zum inkrementierten Wert des Operanden ausgewertet. Steht er hinter dem Operanden – dann spricht man von einem Postinkrement –, inkrementiert er den Operanden, wird aber zum nicht inkrementierten Wert des Operanden ausgewertet. Den Unterschied verdeutlichen diese beiden Codezeilen:
let i = 1, j = ++i; // i und j sind beide 2.
let n = 1, m = n++; // n ist 2, m ist 1.
Beachten Sie, dass der Ausdruck x++ nicht immer das Gleiche ist wie x=x+1. Der ++-Operator führt keine String-Verkettung durch: Er wandelt seinen Operanden immer in eine Zahl um und inkrementiert sie. Wenn x den String-Wert »1« hat, entspricht ++x der Zahl 2, während x+1 zum String »11« ausgewertet wird.
Bitte beachten Sie außerdem, dass wegen JavaScripts automatischer Semikolonergänzung kein Zeilenumbruch zwischen den Postinkrementoperator und den vor ihm stehenden Operanden gesetzt werden darf. Tritt dieser Fall dennoch auf, behandelt JavaScript den Operanden als eine eigenständige Anweisung und fügt vor ihm ein Semikolon ein.
Der Inkrementoperator wird in seinen Erscheinungsformen als Prä- und Postinkrementoperator am häufigsten zur Steuerung von Zählern in for-Schleifen (siehe 5.4.3) eingesetzt.
Dekrement (--)
Der Operator -- erwartet einen Lvalue-Operanden. Er wandelt den Wert seines Operanden in eine Zahl um, zieht 1 von ihm ab und weist den dekrementierten Wert wieder dem Operanden zu. Wie beim ++-Operator ist der Rückgabewert von der Stellung relativ zum Operanden abhängig. Steht er vor seinem Operanden, dekrementiert er den Wert und gibt dann den dekrementierten Wert zurück. Steht er hinter seinem Operanden, dekrementiert er den Operanden, gibt aber den nicht dekrementierten Wert zurück. Steht der Operator hinter dem Operanden, ist zwischen Operand und Operator kein Zeilenumbruch erlaubt.