Arbeiten mit Operatoren

Man will mit Javascript nicht nur verschiedene Daten darstellen, sondern auch mit Ihnen arbeiten, beispielsweise um einen Spielstand zu errechnen, den Gesamtwert eines Warenkorbs errechnen oder nach dem Einloggen den Namen des Users anzuzeigen. Dazu verwendet man Operatoren.

Ausdruck, Operand, Operator

Eine mathematische Formel nennt man Ausdruck. Ein Ausdruck liefert immer ein Ergebnis. In einem Ausdruck kommen Operanden und Operatoren vor. siehe auch

Audruck
3 + 4
Operand Operator Operand

Literale

Die Operanden können Variablen oder einfache Werte sein. Einfache Werte nennt man Literale. Literal bedeutet nichts weiter, als dass der gesamte Wert in einem Schritt aufgeschrieben
wird, statt ihn erst in mehreren Schritten aufzubauen.

x = 3;
x = "Hallo";
x = ["Haus","Baum","Straßenlampe"];

Anweisung / Befehl / statement

Desweiteren gibt es in Programmiersprachen Anweisungen, die man nicht mit Ausdrücken verwechseln sollte. Eine Anweisung ist ein Befehl, der mit Semikolon abgeschlossen wird.

Anweisung

let x = 5;

Codeblock

Mehrere Anweisungen können als Codeblöcke in geschweiften Klammern eingefasst werden.

{
Anweisung;
Anweisung;
Anweisung;
}

Operatoren

Ein Operator, der sich nur auf einen Wert bezieht nennt man unären Operator (++), einen Operator der sich auf 2 Werte bezieht nennt man binären Operator (+). Es gibt in Javascript auch Operatoren, die sich auf 3 Wert beziehen, den ternären Operator.

Arithmetische Operatoren

Rechenoperatoren oder arithmetische Operatoren arbeiten mit Zahlen dem Datentyp Number.

Punktrechnung geht vor Strichrechnung. In Klammern gefasste Rechenoperationen werden zusammengefasst ausgerechnet.

Arithmetische Operatoren
Rechenart Zeichen Beispiel Info
Addition + let x = 3+2; Ergebnis 5
Subtraktion - let x = 4-1; Ergebnis 3
Multiplikation * let x = 3 * 5; Ergebnis 15
Division / let x = 6 / 2; Ergebnis 3
Modulo % let x = 13 % 2; Der Restwert einer Division wird zurückgegeben. In diesem Beispiel ist es der Wert 1. 13 / 2 ist 6 Rest 1 Beispiel
Inkrement ++ x++; Der vorhandene Wert von x wird um 1 erhöht.
aus 2 wird 3
Dekrement -- x-- Der vorhandene Wert wird um 1 verringert.
Aus 2 wird 1;

Inkrementoren & Dekrementoren

Oft will man den Wert einer Variablen um 1 erhöhen oder verringern.

Mit Inkrementoren kann man einen vorhandenen Wert um eins erhöhen mit Dekrementoren kann man einen vorhandenen Wert um eins verringern.

let x = 5;
x = x + 1;

Stattdessen kann man schreiben.

let x = 5;
x++;

Präinkrement & Postinkrement

Wenn man Inkrement oder Dekrement innerhalb eines Ausdrucks nutzt und möchte, dass der Wert vor dem Auswerten des Ausdrucks verringert oder erhöht wird, schreibt man den Inkrementor oder Dekrementor vor die Varibale. Das nennt man Präinkrement oder Prädekrement. Wir sehen im folgendem Beispiel, dass erst beim zweiten console.log der Wert von x um 1 erhöht wurde (Postinkrement). Im dritten console.log sieht man, dass es schon im console.log Aufruf erhöht wurde (Präinkrement). Beispiel

let x = 5;
console.log(x++); //5
console.log(x); //6
console.log(++x); //7

Operatoren mit Zuweisung

Will man den Wert einer Variablen um einen bestimmten Betrag erhöhen oder verringern, so könnte man beispielsweise schreiben:

let x = 5;
x = x + 3;

Stattdessen kann man Rechenoperatoren mit Zuweisung nutzen.

let x = 5;
x += 3;

Zeichen Beispiel Langform Info
Rechenoperatoren mit Zuweisung
+= x += 2 x = x +2 Der vorhandene Wert wird um einen bestimmten Wert erhöht.
Aus 2 wird 4
-= x -= 2 x=x-2 Vom vorhandenen Wert wird ein bestimmter Wert subtrahiert.
Aus 2 wird 0
/= x /= 2 x=x/2 Der vorhandene Wert wird durch einen bestimmten Wert dividiert.
Aus 2 wird 1;
*= x *= 2 x=x*2 Der vorhandene Wert wird mit einem bestimmten Wert multipliziert.
Aus 2 wird 4;
%= x %= 2 x=x%2 Der Rest der Division wird zugewiesen.
Aus 2 wird 0;

Operatoren für Zeichenketten

Zeichenketten kann man aneinanderreihen mit dem + Operator. Man nennt das Konkatenation.

    let gruss= "Hallo ";
    let name = "Willi";
    let ausgabe = gruss + name;
    ausgabe = gruss + name + " Hubert";

Beachten Sie, dass ein Leerzeichen auch ein Zeichen ist.

Auch Ausdrücke und Literale lassen sich mit Strings verknüpfen Mehr dazu hier.
Beispiel

console.log("Das Ergebnis ist: " + (2*3));//Das Ergebnis ist 6

Desweiteren kann man den Zuweisungsoperator verwenden += um einen String um einen weiteren String oder Literal zu erweitern.

let name = 'Willi ';
    name += 'Huber'; // 'Willi Huber' 

Logische Operatoren

Man kann mehrere boolsche Werte verknüpfen, um zu überprüfen, ob beide Werte true sind, oder nur einer von beiden. Außerdem kann man einen Wert in das Gegenteil umwandeln.

   let a = true;
   let b = false;
   let c = a && b; // Ergebnis false
   

Das Ausrufezeichen ist ein unärer Operator er benötigt nur einen Wert.

let d = !true // Ergebnis false
Logische Operatoren
&& logisches Und Beides muss erfüllt sein
|| oder Eins von beiden muss erfüllt sein
! Negation,

Verneinung aus true wird false, aus false wird true

Es ist ein unärer Operator weil er sich nur auf einen Wert bezieht.

Vergleichsoperatoren

Vergleichsoperatoren liefern true oder false und können in if-Strukturen eingesetzt werden.
Weitere Vergleichsoperatoren(weitere Infos bei Selfhtml Vergleichsoperatoren)

Vergleichsoperatoren
== gleich
!= ungleich
> größer als
< kleiner als
>= größer gleich
<= kleiner gleich

===

!==

Gleichheit oder Ungleichheit können Sie nicht nur mit == bzw. !=, sondern auch mit === bzw. !== abprüfen. In diesem Fall werden die Werte zusätzlich auf ihren Datenntyp hin überprüft.

var no=24;
if(no === "24") Rückgabewert false
if(no == "24") Rückgabewert true

Ternärer Auswahloperator

In einer bedingten Anweisung kann man je nach Abfrageergebnis Anweisungen ausführen. Das macht man mit einer if-else-Struktur. Eine kürzere Schreibweise erreicht man mit dem ternären Auswahloperator. Er heißt ternärer Auwahloperator weil er sich auf 3 Operanden bezieht.

   let alter = 14;
   if(alter >= 18){
       console.log("Herzlich willkommen.")
   }else{
       console.log("Eintritt erst ab 18.")
   }

Es folgt die Alternative mit dem ternären Auswahloperator. Man beachte die Schreibweise mit Fragezeichen ? und Doppelpunkt :

let alter = 30;
(alter >= 18) ? console.log("Herzliche Willkommen") : console.log("Eintritt erst ab 18");

Bedingung ? True-Anweisung : Else-Anweisung;

Bitweise Verschiebungsoperatoren

Bitweise Verschiebungsoperatoren

Hiermit werden Binärzahlen um Stellen nach links oder rechts verschoben und mit Nullen aufgefüllt. Zum Beispiel die Zahl 42 hat die Binärzahl 101010

zahl = 42; Dezimalzahl 42 101010
zahl << 1 1 Stelle nach links entspricht einer Multiplikation mit 2. 1010100
zahl >>1; 1 Stelle nach rechts entspricht teilen durch 2 (ganzzahlig) 10101
zahl << 2; 2 Stellen entspricht multiplizieren mit 2 mal 2. 10101000
zahl >>> 3; 3 Klammern bedeutet es wird auf jeden Fall mit Nullen aufgefüllt, bei größeren Zahlen könnte es ja auch sein, dass eine 1 folgt 000101
Bitoperatoren

Bitoperatoren verschieben nicht, sondern verknüpfen Bits direkt miteinander. Nehmen wir als Beispiel die beiden Operanden a und b mit folgenden Werten
a= 10; // Bit:1010
b=12; //Bit:1100.

10
12

Diese beiden Bit Operanden werden Stelle für Stelle verglichen. 1010
1100
a & b Wenn beide Operanden an der gleichen Stelle eine 1 stehen haben erscheint eine 1. 1000
a | b Bitweiser oder Operator. Es erscheint nur dann eine 0, wenn auf beiden Seiten an gleicher Stelle eine 0 steht. 1110
a^b xor ein ausschließender Operator, wir erhalten eine 0 wenn auf beiden Seiten der gleiche Wert steht und eine 1 wenn auf beiden Seiten etwas verschiedenes steht. 0110
a ~ Der Komplementäroperator wird nur auf einen Operanden angesetzt und dieser kehrt die Werte um. Eine 1 wird zur 0 und eine 0 zur 1 0101

Spread Operator (Der "Auspacker")

Stell dir den Spread-Operator wie einen "Auspacker" vor. Er nimmt eine Sammlung (ein Array oder ein Objekt oder ein Set) und breitet deren Inhalte einzeln aus. Der Spread Operator und Rest-Operator besteht aus 3 Punkten ...

1. Arrays zusammenfügen (statt concat)

Früher musstest du mühsam verketten. Mit dem Spread-Operator "schüttest" du die Inhalte einfach in ein neues Array:

let land = ["Deutschland", "Italien"];
let stadt = ["Berlin", "Rom"];
let kombiniert = [...land, ...stadt];
// Ergebnis: ["Deutschland", "Italien", "Berlin", "Rom"]  

2. Das "Set"-auspacken

Ein Set ist toll, um Duplikate zu löschen, aber es ist kein echtes Array (man kann z. B. nicht darauf sortieren).

3. Kopieren von Objekten

Das ist extrem wichtig in der modernen Webentwicklung (z. B. React), um Daten nicht versehentlich zu überschreiben:

let user = { name: "Max", alter: 25 };
let userMitJob = { ...user, job: "Entwickler" };
// Erstellt ein NEUES Objekt, kopiert alle Eigenschaften von 'user' hinein und fügt 'job' hinzu.  

Der Rest-Operator (Der "Einsammler")

Der Rest-Operator wird meistens dort benutzt, wo man Dinge entgegennimmt, zum Beispiel in Funktionsparametern oder beim Destructuring.Er besteht wie der Spread-Operator aus drei Punkten ...

In Funktionen:

siehe Funktionsparametern
Wenn du nicht weißt, wie viele Argumente ein User an deine Funktion übergibt, sammelst du den "Rest" einfach ein:

function teamBildung(...restPara){
 return "Team: "+ restPara.join(", ");
}
teamBildung("Peter", "Yvette", "Jan");
console.log(teamBildung("Peter", "Yvette", "Jan")); 
// Team: Peter, Yvette, Jan  

Beim Destructuring:

siehe Destructuring
Du möchtest einen Teil auspacken und den verbleibenden Rest in einer eigenen Variable behalten:

let [direktor, chef, ...malocher] = ["Lars", "Nina", "Marc", "Julia", "Tom"];
console.log(direktor);// "Lars"
console.log(chef);// "Nina"
console.log(malocher);// ["Marc", "Julia", "Tom"]

Spread-Operator & Rest-Operator

Kurz gesagt: Der Spread-Operator nimmt die "Klammern" um die Daten weg und verteilt den Inhalt einzeln dort, wo du ihn gerade brauchst.

Der Spread- und der Rest-Operator sind zwei Seiten derselben Medaille. Sie benutzen beide die gleiche Syntax (...), machen aber genau das Gegenteil voneinander.

Um sie zu unterscheiden, hilft ein einfacher Merksatz:

1. Der Spread-Operator (Das "Auspacken")

Stell dir vor, du hast eine Schachtel und möchtest den Inhalt flach auf dem Tisch verteilen. Man verwendet es in:

2. Der Rest-Operator (Das "Einsammeln")

Der Rest-Operator wird meistens dort benutzt, wo man Dinge entgegennimmt, zum Beispiel in Funktionen oder beim Des

Der direkte Vergleich

Operator Wo steht er? Was passiert?
Spread Rechts vom = oder im Funktionsaufruf Ein Array/Objekt wird in seine Einzelteile zerlegt.
Rest Links vom = oder im Funktionskopf Einzelne Werte werden zu einem Array/Objekt zusammengefasst.

Was erzeugt der Operator?

Der Operator ... passt sich seiner Umgebung an:


 

Javascript Tipps