Grundlegende JavaScript-Lernserie 20: Ein-Dollar-Addition und -Subtraktion

Ändern Sie einfach die Präfixdekrementierung in die Suffixdekrementierung. Der Unterschied ist offensichtlich. Im Beispiel mit der Präfixversion sind die Werte von num3 und num4 beide 21. In diesem Beispiel ist der Wert von num3 22 und der Wert von num4 21.

Der ursprüngliche Wert von num1 (2) wird zur Berechnung von num3 verwendet, und der dekrementierte Wert von num1 (1) wird zur Berechnung von num4 verwendet.
Diese 4 Operatoren können mit jedem Wert arbeiten, was bedeutet, dass sie nicht auf ganze Zahlen beschränkt sind – Zeichenfolgen, boolesche Werte, Gleitkommawerte und sogar Objekte können funktionieren. Inkrementierungs- und Dekrementierungsoperatoren folgen den folgenden Regeln.

  • Wenn Zeichenfolgen in gültiger numerischer Form vorliegen, werden sie in einen numerischen Wert konvertiert und die Änderungen werden übernommen. Der Variablentyp ändert sich von „String“ zu „Numerisch“.
  • Bei Zeichenfolgen wird der Wert der Variablen auf NaN gesetzt, wenn es sich nicht um eine gültige numerische Form handelt. Der Variablentyp ändert sich von „String“ zu
    „Numerisch“.
  • Wenn boolesche Werte falsch sind, werden sie in 0 konvertiert, bevor die Änderungen übernommen werden. Der Variablentyp ändert sich von boolesch zu numerisch.
  • Wenn boolesche Werte wahr sind, werden sie in 1 konvertiert, bevor die Änderungen übernommen werden. Der Variablentyp ändert sich von boolesch zu numerisch.
  • Für Gleitkommawerte addieren Sie 1 oder subtrahieren Sie 1.
  • Wenn es sich um ein Objekt handelt, rufen Sie dessen Methode valueOf() auf (die in Kapitel 5 ausführlich vorgestellt wird), um einen ausführbaren Wert zu erhalten. Wenden Sie die oben genannten Regeln auf den resultierenden Wert an. Wenn es NaN ist, wird toString() aufgerufen und andere Regeln werden erneut angewendet. Der Variablentyp ändert sich von Objekt zu Numerisch.
let s1 = "2";
    let s2 = "z";
    let b = false;
    let f = 1.1;
    let o = {
    
    
      valueOf() {
    
    
        return -1;
} };
s1++; // 值变成数值3
s2++; // 值变成NaN
b++; // 值变成数值 1
f--; // 值变成 0.10000000000000009(因为浮点数不精确) o--; // 值变成-2

1. Addition und Subtraktion von einem Dollar:

Die unären Additions- und Subtraktionsoperatoren sind den meisten Entwicklern vertraut; sie werden in ECMAScript genauso verwendet wie in der Mathematik der High School. Unäres Plus wird durch ein Pluszeichen (+) dargestellt, das vor der Variablen steht, und hat keinen Einfluss auf den Wert:

   let num = 25;
    num = +num;
    console.log(num); // 25

Wird eine unäre Addition auf einen nicht numerischen Wert angewendet, erfolgt die gleiche Typkonvertierung wie bei der Cast-Funktion Number(): Die booleschen Werte false und true werden in 0 und 1 umgewandelt, die Strings werden nach speziellen Regeln geparst , und die Objekte verfügen über ihre valueOf()- und/oder toString()-Methode, um einen Wert zu erhalten, der konvertiert werden kann.
Die folgenden Beispiele veranschaulichen das Verhalten von unary plus bei Anwendung auf verschiedene Datentypen:

   let s1 = "01";
    let s2 = "1.1";

Die unäre Subtraktion wird durch ein Minuszeichen (-) vor der Variablen dargestellt und wird hauptsächlich verwendet, um den Wert in einen negativen Wert umzuwandeln, z. B. um 1 in 1 umzuwandeln. Beispiele sind wie folgt:

let num = 25;
num = -num;
console.log(num);  // -25

Durch die unäre Subtraktion eines numerischen Werts wird dieser in den entsprechenden negativen Wert umgewandelt (wie im Beispiel oben gezeigt). Bei der Anwendung auf nicht numerische Werte folgt die unäre Subtraktion den gleichen Regeln wie die unäre Addition: Sie werden zuerst umgewandelt und dann der negative Wert angenommen.


2. Bitoperatoren:

Die als Nächstes eingeführten Operatoren werden für Operationen auf niedriger Ebene an numerischen Werten verwendet, dh für Operationen an den Bits (Bits), die Daten im Speicher darstellen. Alle Werte in ECMAScript 12 werden im IEEE 754 64-Bit-Format gespeichert, Bitoperationen werden jedoch nicht direkt auf die 64-Bit-Darstellung angewendet. Stattdessen wird der Wert zunächst in eine 32-Bit-Ganzzahl konvertiert und die Bitoperationen ausgeführt , und das Ergebnis wird in 64 Bit konvertiert. Für den Entwickler sieht es so aus, als gäbe es nur 32-Bit-Ganzzahlen, da das 64-Bit-Ganzzahlspeicherformat unsichtbar ist. Da wir das nun wissen, müssen wir nur noch 32-Bit-Ganzzahlen berücksichtigen.

Vorzeichenbehaftete Ganzzahlen verwenden die ersten 31 Bits von 32 Bits, um ganzzahlige Werte darzustellen. Bit 32 stellt das Vorzeichen des Werts dar, z. B. 0 bedeutet positiv und 1 bedeutet negativ. Dieses Bit wird Vorzeichenbit genannt und sein Wert bestimmt das Format des restlichen Werts. Positive Werte werden im echten Binärformat gespeichert, d. h. jedes der 31 Bits stellt eine Zweierpotenz dar. Das erste Bit (Bit 0 genannt) repräsentiert 20, die zweite Ziffer repräsentiert 21 und so weiter.


3. Boolesche Operatoren:

Der logische NOT-Operator wird durch ein Ausrufezeichen (!) dargestellt und kann auf jeden Wert in ECMAScript angewendet werden. Dieser Operator gibt immer einen booleschen Wert zurück, unabhängig vom Datentyp, auf den er angewendet wird. Der logische NOT-Operator wandelt den Operanden zunächst in einen booleschen Wert um und invertiert ihn dann. Mit anderen Worten: Der logische NOT-Operator folgt den folgenden Regeln.

  • Wenn der Operand ein Objekt ist, wird „false“ zurückgegeben.
  • Gibt true zurück, wenn der Operand eine leere Zeichenfolge ist.
  • Wenn der Operand eine nicht leere Zeichenfolge ist, wird „false“ zurückgegeben.
  • Wenn der Operand den Wert 0 hat, wird true zurückgegeben.
  • Wenn der Operand ein Wert ungleich Null ist (einschließlich Infinity), wird false zurückgegeben.  Wenn der Operand null ist, wird „true“ zurückgegeben.
  • Gibt true zurück, wenn der Operand NaN ist.
  • Wenn der Operand undefiniert ist, wird „true“ zurückgegeben.

おすすめ

転載: blog.csdn.net/wanmeijuhao/article/details/135442567