ioBroker JavaScript – Sprachelemente

In diesem Artikel möchte ich eine kurze Einführung in die Sprachelemente von JavaScript geben. 

Inhaltsverzeichnis:

1. Syntax
2. Kommentare
3. Datentypen und Variablen
4. Operatoren
5. Bedingungen
6. Schleifen
7. Funktionen

 

 

 



 

 

1. Syntax

Die Syntax von JavaScript ist an die Programmiersprache C angelehnt. Im ersten Schritt wollen wir hier erst ein paar grundlegende Regeln zur Notation bzw. zum sogenannten Syntax der Sprache besprechen. In JavaScript gibt es sogenannte Statements (Anweisungen). Statements können z. B. Variablen-Deklarationen und -Zuweisungen oder Funktionsaufrufe sein. Anweisungen werden dabei immer mit einem Semikolon ; abgeschlossen.

Beispiel für ein Statement in Form einer Variablendeklaration (a) sowie der Zuweisung der Anweisung (3 * 4):

var a = 3 *4;

JavaScript ist case-sensitive, das bedeutet dass JavaScript bei Schlüsselwörtern, Namen von Variablen oder Funktionen. zwischen Groß- und Kleinschreibung unterscheidet.
So ist eine Variable mit dem Namen Raum also eine andere, wie die Variable mit dem Namen raum.

Als Schreibweise die „Camel Case“ Schreibweise etabliert. Bei dieser Schreibweise werden die einzelnen Wörter von Variablennamen groß geschrieben, mit der Ausnahme des ersten Wortes einer Variable. Hier nun ein kleines Beispiel:

var raumSchlafzimmerId = 1;
var raumKuecheId = 2;
var raumEsszimmerId = 3;

Die Schreibweise ist nur ein Vorschlag, und muss nicht zwingend so übernommen werden. Ich nutze diese Schreibweise mittlerweile für einige meiner eigenen Skripts.

 

 

2. Kommentare

Kommentare dienen hauptsächlich zu „Dokumentationszwecken“ direkt im Skript und können in JavaScript auf 2 verschiedene Arten erstellt werden.
Mit den 2 Schrägstrichen // wird die restliche Zeile ab der aktuellen Position auskommentiert.

// Dies ist ein einzeiliger Kommentar

Über die Zeichenfolge /* können wir auch einen mehrzeiligen Kommentar erstellen. Um den Kommentar „zu schließen“, benötigen wir abschließend die Zeichenfolge */.

/*
Dies ist ein mehrzeiliger Kommentar
...
...
...
*/

 

 

3. Datentypen und Variablen

Variablen werden in JavaScript mittels dem Schlüsselwort var deklariert. Hinter dem Schlüsselwort var muss ein Leerzeichen und anschließend der Variablenname definiert werden.
Der Gültigkeitsbereich einer Variablen erstreckt sich über den aktuellen Block und alle untergeordneten Blöcke. Innerhalb diesen Blocks muss der Variablenname eindeutig sein.
Im folgenden Beispiel legen wir nun eine Variable an:

var raumSchlafzimmerId;

Nach dem Anlegen können wir nun der Variable raumSchlafzimmerId einen Wert zuweisen.

var raumSchlafzimmerId = 1;

Anders wie in vielen anderen Programmiersprachen, muss bei der Deklaration einer Variablen kein Datenntyp angegeben werden.

Im folgenden Beispiel legen wir nun verschiedene Variablen mit verschiedenen Datentypen an:

// Variable mit Zeichenfolge
var raumBezeichnung = "Schlafzimmer";


// Variable mit numerischem Datentyp
var raumSchlafzimmerId = 1; 


// Variable mit Datentyp Boolean (true, false)
var raumSchlafzimmerStatus = true; 


// Variable mit numerischem Datentyp inkl. Nachkommastellen (float)
var raumSchlafzimmerTemp = 19.5; 

 

4. Logische Operatoren

Logische Operatoren dienen dazu, boolsche Werte (Wahrheitswerte „true“ oder „false“) miteinander zu verknüpfen. Gerade in der Welt des Smart-Home ein sehr wichtiges Thema für die Verknüpfung der einzelnen Zustände von Aktoren.

Name Erklärung
! NOT (Nicht) Mit !x wird x negiert (x=true – !x = false)
&& AND (Und) x && y ist dann und nur dann „true“, wenn sowohl x als auch y „true“ sind,
|| OR (Oder) x || y ist „true“, wenn einer der beiden Werte x oder y oder beide „true“ sind.

 

 

5. Bedingungen

Bedingungen in Programmiersprachen ermöglichen es, bestimmte Fälle abzuprüfen, z. B. ob eine Variable oder Datenpunkt einen bestimmten Wert hat.
JavaScript bietet hierfür zwei Möglichkeiten:

– einfache Verzweigung – if-Statement
– mehrfache Verzweigung – switch-case-Statement

Eine einfache Verzweigung dient in erster Linie dafür, nur einen bestimmten Fall abzuprüfen. Eine einfache Verzweigung kann wie folgt aussehen:

if ( BEDINGUNG ) {
  // Anweisung 1
}
else {
  // Anweisung 2
}

Die angegebene Bedingung muss immer einen Wert vom Typ Boolean sein. In der folgenden Tabelle werden Vergleichsoperatoren dargestellt, welche für Bedingungen eingesetzt werden können:

x == y Wert x ist gleich y
x === y Wert und Datentyp x ist gleich y
x != y Wert x ungleich gleich y
x !== y Wert und Datentyp x ungleich y
x > y Wert x größer y
x >= y Wert x größer gleich y
x < y Wert x kleiner y
x <= y Wert x kleiner gleich y

 

Mehrfache Verzweigungen werden in JavaScript mittels switch-case realisiert. Um eine solche Verzweigung zu erstellen, benötigen wir das Schlüsselwort switch und in Klammern einen Wert der geprüft werden soll. Als nächstes erstellen wir einen Block mit geschweiften Klammern. Innerhalb des Blocks werden nun die verschiedenen Fälle angegeben. Hierfür schreiben wir das Schlüsselwort case und anschließend den Wert, welcher mit dem oben angegebenen Wert verglichen werden soll, gefolgt von einem Doppelpunkt. Als letzte Anweisung muss das Schlüsselwort break erstellt werden. Ähnlich wie bei if-else gibt es auch hier die Möglichkeit, den Fall abzufangen, wenn keine der geschriebenen Bedingungen zutrifft. Hier nutzen wir an Stelle des case-Schlüsselworts default.

Im folgenden Beispiel wird die switch-case Verzweigung veranschaulicht:


var raumId = 4;
var raumBezeichng = "";

switch (raumId)
{
    case 1:
        raumBezeichng = "Küche";
        break;
    case 2:
        raumBezeichng = "Esszimmer";
        break;
    case 3:
        raumBezeichng = "Wohnzimmer";
        break;        
    case 4:
        raumBezeichng = "Schlafzimmer";
        break;
    default:
        raumBezeichng = "Unbekannter Raum";
        break;  
}

Nach dem Ausführen der Anweisung steht in der Variable raumBezeichnung die Zeichenkette „Schlafzimmer“.

 

6. Schleifen

JavaScript bietet folgende Schleifentypen:

  • for
  • while
  • do-while
  • for-in (Nur für Array-Datentypen, wird hier nicht behandelt.)

 

For

Die For-Schleife wird auch häufig als Zählschleife bezeichnet. Mit der Schleife können bestimmte Vorgänge eine gewisse Anzahl ausgeführt werden. Eine For-Schleife beginnt mit dem Schlüsselwort „for“ gefolgt von einem in runden Klammern gesetzten Schleifenkopf. Der Schleifenkopf besteht aus drei Bestandteilen, welche durch Semikolon getrennt werden. Der erste Teil dient zur Variablendeklaration. Diese wird vor dem Aufruf der Schleife ausgeführt. Der zweite Teil stellt die Bedingung der Schleife dar. Die Bedingung wird vor jedem Durchlauf der Schleife und somit auch vor dem ersten Durchlauf geprüft. Der dritte Teil dient bei der üblichen Zählschleife zum Hochzählen der im ersten Teil definierten Variablen. Hierfür kann der Operator ++ (Inkrementierung) oder — (Dekremtentierung) verwendet werden. Um vorzeitig die Schleife zu verlassen kann als Anweisung das Schlüsselwort break verwendet werden.

for (var i = 0; i<10; i++)
{
  // Anweisung
}

 

while

Die while-Schleife ist eine kopfgesteuerte Schleife, d. h. die angegebene Bedingung wird geprüft bevor der Code der Schleife (Schleifenrumpf) ausgeführt wird. Eine while-Schleife wird mit dem Schlüsselwort while und der Bedingung (angegeben in runden Klammern) gebildet.

var i = 0;
 
while (i < 10)
{
  // Anweisung
  i++;
}

 

do-while

Die do-while-Schleife ist ähnlich wie die while-Schleife, jedoch mit dem gravierenden Unterschied, dass es sich bei der do-while-Schleife um eine fußgesteuerte Schleife handelt. Dies hat zur Folge, dass der Code des Schleifenrumpfs mindestens einmal ausgeführt wird. Die Prüfung der Bedingung der Schleife wird immer am Ende eines Schleifendurchlaufs ausgeführt.

var i = 0;
 
do
{
  // Anweisung
  i++;
}
while (i < 10);

 

 

7. Funktionen

Funktionen sind dazu gedacht, einen Code mehrmals zu nutzen sowie zu strukturieren. Um eigene Funktionen zu definieren, notieren wir das Schlüsselwort function gefolgt von einem Leerzeichen und dem Namen der Funktion. Der Funktionsname ist, wie der Variablenname auch, frei definierbar, muss jedoch innerhalb des Gültigkeitsbereichs eindeutig sein.  Auch für Funktionen sollte die „Camel Case“-Schreibweise angewendet werden. Hinter dem Funktionsname wird ein rundes Klammernpaar geschrieben. Innerhalb der Klammern werden nun die Parameter für die Funktion kommagetrennt angegeben. Funktionen können auch ohne Parameter erstellt werden. Die Namen dieser Parameter können ebenfalls wieder frei definiert werden.  Variablennamen innerhalb der Funktion, sowie die Namen der Parameter selbst, dürfen dabei jedoch nicht mehrmals vorkommen und müssen somit eindeutig sein. Nach der schließenden runden Klammer notieren wir ein Paar von geschweiften Klammern (Block). Innerhalb des Blocks wird nun der Code der Funktion notiert.

Um Funktionen aufzurufen, notieren wir den Namen der Funktion, gefolgt von einem runden Klammernpaar, in welchem die Werte für die Parameter kommagetrennt angegeben werden. Am Ende wird noch ein Semikolon notiert.

Beispiel-Funktion:

function allLightsOn() {
  setState("hm-rpc.0.OEQ08123XX.State",true);
  setState("hm-rpc.0.OEQ08456XX.State",true);
  setState("hm-rpc.0.OEQ08789XX.State",true);
  setState("hm-rpc.0.OEQ08012XX.State",true);
}

allLightsOn();

 

 

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere