NEWS
Nachhilfe in Javascript
-
Hallo
würde mal sagen das ist OR (ODER) und && gleich AND (UND).
Gruß Norbert
-
Sorry - jetzt versteh ich gar nix mehr? OR und gleich AND ???????
-
ich denke er meint "&&" bedeutet ein logisches "und".
"||" ist ein logisches "oder"
Schau mal hier http://www.w3schools.com/js/js_comparisons.asp
-
Aaaahh - alles klar. Jetzt hab ichs verstanden.
Danke!
-
Ich fand das Thema ganz passend. Ich habe folgendes Skriptelement:
on ('hm-rpc.1.000C17099A0436.1.PRESENCE_DETECTION_STATE' || 'hm-rpc.1.000C17099A04BC.1.PRESENCE_DETECTION_STATE', function (dp) {
Es handelt sich um 2 Bewegungsmelder, die eine Bewegung als Variable weitergeben sollen. Natürlich als "oder" verknüpft.
Das folgende Skript funktioniert, allerdings immer nur beim ersten Sensor. Sprich der nach dem || stehende Sensor schaltet nicht. Habe die Positionen auch schon getauscht, aber dann reagiert halt der Andere nicht.
Wo liegt denn mein Fehler? :?: :?: :?:
-
Logische Operatoren funktionieren nicht bei einer Subscription. Du musst für jeden Bewegungsmelder eine eigene Subscription erstellen.
Und gegebenen falls, bei && z.B., den Status des anderen BWM's prüfen.
Gesendet von Unterwegs
-
Glaube das muss mit einem reg ex gemacht werden, wenn wine on funtion durch 2 Ereignisse ausgelöst werden soll.
Mach das mal in blockly und lass dir den Code anzeigen. Dann kannst das sehen wie das aussehen muss.
-
Ah muss nicht regex sein, es gibt seit kurzem die Möglichkeit mehrere id's in ein array zu packen um es für eine Subscription zu nutzen. Das kommt einer logischen oder Verknüpfung gleich.
[id1,id2,id3]
Gesendet von Unterwegs
-
@ ple - ich hasse dieses Blockly. :? Deshalb lerne ich sogar gerade lieber JavaScript.
@ Jey Cee - super…läuft. Danke dir!
Wünsche euch noch eine gute Nacht...
-
if (err || !client) ```` `
Ich glaube das wichtigste wurde hier noch nicht erwähnt. Nicht sicher ob dir das bewusst ist:
Die Variablen err und client sind sehr wahrscheinlich Objekte. Diese sind in JavaScript "truthy" (also "wahr oder so ähnlich"), wenn sie weder null noch undefined sind. Der obige Code prüft also, ob entweder err einen Wert hat oder client keinen hat. Sollte eine dieser Variablen ein boolean sein, kann es seltsam werden.
Ausführlich wäre das so:
if (err != null || client == null)
mit dem Hinweis dass "!= null" prüft ob die Variable weder null noch undefined ist. (!== null würde nur mit null vergleichen)
oder
if (typeof err !== "undefined" || typeof client === "undefined")
Kurz:
1. funktioniert, kann aber unvorhergesehene Auswirkungen haben
2. ist weniger anfällig und mein Favorit
3. ist mir persönlich zu lang, funktioniert aber auch wenn du die Variable vorher nicht definiert hast.