JavaScript Modulo, Vergleiche, Inkrementieren

Javascript addieren, multiplizieren, zuweisen, vergleichen

Javascript Operatoren für Modulo, zum Rechnen, Vergleichen oder Negieren sind meist ein mathematisches Symbol wie '+', '=', '!' (not) oder '%' (modulo), aber manchmal sind sie auch ein Wort wie typeOf oder instanceOf.

Nahezu jede Javascript-Anweisung benutzt einen Operator: addieren, multiplizieren, zuweisen, vergleichen oder Daten bewegen.

Javascript-Operatoren rechnen Eins und Eins zusammen, vergleichen Werte und Ergebnisse von Abfragen und weisen Javascript-Variablen einen Wert zu.

Die Daten, auf denen Operatoren operieren, heißen Operanden. Nehmen wir einen einfachen Ausdruck:

Schautafel: Operand – Operator

Operatoren lassen sich in Kategorien zusammenfassen:

Der Zuweisungs-Operator – das Gleichheitszeichen = – weist einer Variablen auf der linken Seite Werte zu.

Wird zu
=
Addieren u. Zuweisen
+=
Subtrahieren u. Zuweisen
-=
Modulo u. Zuweisen
%=
Dividieren u. Zuweisen
/=
Multiplizieren u. Zuweisen
*=

Rechnen: Mathematische Operatoren für Rechenoperationen

Addition
+
Dekrement
--
Division
/
Inkrement
++
Modulo
%
Multiplikation
*
Negation
-
Subtraktion
-

Vergleichs-Operatoren vergleichen zwei Werte, Variablen oder Anweisungen

Gleich
==
Nicht gleich
!=
Strenges Gleich
===
Strenges Nicht gleich
!==
Größer als
>
Kleiner als
<
Größer oder Gleich
>=
Kleiner oder Gleich
<=

Logische Operatoren vergleichen zwei bedingte Anweisungen, um zu prüfen, ob eine oder beide Bedingungen true oder false liefern

NOT
!
OR
||
AND
&&

Bitweise Operatoren führen logische Operationen auf dem Bitlevel aus

AND
 
OR
|
XOR
 
Nach Links
<<
Nach Rechts
>>
Nach Rechts und mit Nullen füllen
>>>
Bitweises Komplement
~

Spezielle Operatoren
wie void, this, in und instanceof straffen die speziellen Operatoren den Scriptcode.

Ternary
?:
Test
typeof
Ist Instanz von
instanceof
Löschen
delete
Test
in
Erzeugen
new
Evaluieren
void
Aktuelles Objekt
this

String-Operatoren

Die einzige Javascript String-Operation ist die Konkatenation zweier Strings. Die Konkatenation verbindet Strings miteinander.

Der +-Operator wird sowohl zur Addition als auch zum Zusammenfügen von zwei oder mehr Zeichenketten benutzt. Aus mehreren individuellen Zeichenketten entsteht eine neue Zeichenkette:

let brot = "Brot";
let butter = "Butter";
let salz = "Salz";
let myNewString = brot + ', ' + butter + ' und ' + salz;

Die neue Zeichenkette wird aus den drei Variablen brot, butter und salz und zwei literalen Strings ', ' und ' und ' zusammengesetzt.

Der +-Operator ist doppelt belegt und ist auch der arithmetische +-Operator. Sobald einer der beiden Operanden eine Zeichenkette ist, fügt der +-Operator die beiden Operanden zu einem String zusammen.

let sum = 35 + 15 + " €";

erzeugt 3515 € und nicht 50 €.

Logische Operatoren

NOT

Der !-Operator gibt true zurück, wenn der Operand den Wert false aufweist.

let x = 200;
…
if (!x) // false, denn x ist definiert und initialisiert

Liest sich: Wenn x false ist …

OR – „logisches Oder“

Der ||-Operator gibt true zurück, wenn der linke oder rechte Wert oder beide true sind.

let x = 20;
let y = 200;
if (x > 10 || y < 5) // gibt true zurück, denn x > 10

Liest sich: Wenn x größer als 10 ist oder y kleiner als 5 ist …

Das gibt uns eine komfortable Methode, um Defaultwerte zu deklarieren:

myVal = v || 10;

Wenn der erste Operand false, null, undefined, "" (leere Zeichenkette) oder die Zahl 0 zurückgibt, gibt der ||-Operator den zweiten Operanden zurückgegeben, ansonsten den ersten Operanden.

AND – „logisches Und“

&& gibt true zurück, wenn sowohl der linke als auch der rechte Wert true sind.

let x = 20;
let y = 0;
if (x > 100 && y < 5) // true, denn beide Seiten liefern true 

Liest sich: Wenn x größer als 100 ist und y kleiner als 5 ist …

Damit kann man schnell einen null-Check durchführen:

let myVal = p && p.name

Wenn der erste Operand false, null, undefined, "" (leere Zeichenkette) oder die Zahl 0 zurückgibt, gibt der &&-Operator den ersten Operanden zurück, ansonsten den zweiten Operanden.

Bitweise Operationen

Bitweise Operatoren führen logische Operationen und Schiebeoperationen durch. Sie operieren auf den Operanden, als wären diese eine Folge von 32 Bits, geben aber eine Dezimalzahl zurück.

Bitweise AND

Der &-Operator gibt eine 1 für jede Stelle zurück, an der die korrespondierenden Bits beider Operanden 1 ist.

let x = 2;             // 0000 0010
let y = 42;            // 0010 1010

let z = x & y;         // 0000 0010 = 2

Bitweise OR

Der |-Operator gibt eine 1 für jede Stelle zurück, an der eines oder beide der korrespondierenden Bits der Operanden 1 sind.

let x = 2;             // 0000 0010
let y = 42;            // 0010 1010

let z = x | y;         // 0010 1010 = 42

Bitweise XOR

Der ^-Operator gibt eine 1 zurück für jede Stelle, an der genau einer (aber nicht beide) korrespondierenden Bits der Operanden 1 sind.

let x = 2;             // 0000 0010
let y = 42;            // 0010 1010

let z = x ^ y;         // 0010 1000 = 40

Nach links schieben

Der << -Operator schiebt die Bits des ersten Operanden nach links, und zwar um die Anzahl der Stellen, die im zweiten Operanden notiert sind. Die Stellen, die dabei auf der rechten Seite entstehen, werden mit Nullen gefüllt und alle Nullen und Einsen, die auf der linken Seite herausfallen, werden gelöscht. Das Verschieben des binären Werts nach links um n Stellen entspricht der Multiplikation mit 2n.

let x = 1024;           // 0100 0000 0000
x = x<<2;               // 1000 0000 0000
alert(x);               // gibt 4096 aus

um nach links schieben

 
<p><input type="text" id="opX" size="6" />  
um <input type="text" id="opS" size="2" /> nach links schieben

<div id="opResult"> </div>
<div><button id="shift">Schieb los</button></div>
let shift = document.getElementById('shift');
shift.onclick = function() {
    let x = parseInt(document.getElementById('opX').value);
    let s = parseInt(document.getElementById('opS').value);
    let y = document.getElementById('opResult');

    if (isNaN(x) || isNaN(s)) {
        y.innerHTML = "Fehlerhafte Eingabe";
    } else {
        y.innerHTML = x<<s;
    }
}

Nach rechts verschieben

Der >>-Operator schiebt die Ziffern der Binärdarstellung des ersten Operanden nach rechts, und zwar um die Anzahl der Stellen, die im zweiten Operanden notiert sind und löscht dabei alle Ziffern, die nach rechts herausgeschoben werden. Das Bits der linken Seite werden kopiert, so dass das Vorzeichen der Zahl erhalten bleibt. Das Verschieben des Binärwerts um n Stellen entspricht der Division durch 2n.

let x = -1024;           // 1111 1100 0000 0000
x = x>>4;                // 1111 1111 1100 0000 = -64
alert(x);
 

Nach rechts schieben und mit Nullen auffüllen

Der >>>-Operator schiebt die Binärdarstellung des ersten Operanden nach rechts, und zwar um die Anzahl der Stellen, die im zweiten Operanden notiert sind. Bits, die dabei zur rechten Seite herausfallen, werden gelöscht und auf der linken Seite werden Nullen eingesetzt. Der >>>-Operator funktioniert also genauso wie der >>-Operator, aber negative Werte verlieren ihr Vorzeichen.

 

Bitweises Komplement

Der ~-Operator komplementiert die Stellen des Binärwerts – aus Null wird Eins und aus Eins wird Null.

let y = 42;         // ... 0000 0010 1010
let z = ~y;         // ... 1111 1101 0101 = -43

Ausführungsreihenfolge

Die Mathematik und der Computer mögen es ordentlich. Alles hat eine Funktion und eine Reihenfolge, in der es durchgeführt wird. Wenn ein Ausdruck mehrere Operationen enthält, gibt es also ein feste Rangfolge, in der die Operatoren angewendet werden: Zuerst werden immer die Operationen in Klammern ausgeführt, beginnend bei der innersten Klammer. Bei gleicher Rangfolge werden die Operatoren von links nach rechts angewendet. Zuweisungen haben die niedrigste Priorität – der Ausdruck auf der rechten Seite einer Zuweisung wird vor der Ausführung immer ausgewertet.

  • 2 + 4 * 7 wird als (4 * 7) + 2 berechnet, da die Multiplikation vor der Addition rangiert
  • 7 * (2 + 4) wird als (2 + 4) * 7 berechnet, da der Ausdruck in der Klammer vor der Multiplikation rangiert
( ) [ ]

function()

! ~ - ++ -- new typeof void delete

* / %

+ -

<< >> >>>

< <= > >=

== !=

&

^

|

&&

||

? :

= += %= ⁄= -= *= <<= >>= &= ^= |=

,

let y = 18 + 24; Operanden Operator