NEWS
Nachhilfe in Javascript
Nachhilfe in Javascript
-
Hallo zusammmen,
bitte klärt mich mal jemand auf was der doppelte Trenner wie z.B. in der folgenden Zeile
if (err || !client)für eine Bedeutung hat. Ich habe sowas jetzt schon mehrfach gelesen aber noch nicht mal kopiert
weil ich mir noch keinen wirklichen Reim drauf machen kann. Ist das sowas wie "orelse"?Sorry für die eigentlich dumme Frage, aber ich komme nun mal aus der VB-Welt und dort wird dieser Trenner eigentlich nie verwendet…
Danke und Gruß
Thilo
-
ich denke er meint "&&" bedeutet ein logisches "und".
"||" ist ein logisches "oder"
Schau mal hier http://www.w3schools.com/js/js_comparisons.asp
-
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? :?: :?: :?:
-
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.
