&
ist bitweise UND
Dieser Operator erwartet zwei Zahlen und stimmt eine Zahl erneut ab. Falls es sich nicht um Zahlen handelt, werden sie in Zahlen umgewandelt.
Wie funktioniert es? Wikipedia hat eine Antwort: https://en.wikipedia.org/wiki/Bitwise_operation#AND
Hinweis: In Javascript wird von der Verwendung dieses Operators abgeraten, da es keinen ganzzahligen Datentyp gibt, sondern nur Gleitkommazahlen. Daher werden Floats vor jeder Operation in Ganzzahlen umgewandelt, was sie langsam macht. Außerdem hat es in typischen Webanwendungen keine wirkliche Verwendung und erzeugt unlesbaren Code.
Allgemeine Regel: Vermeiden. Benutze es nicht. Es hat selten Platz in einem wartbaren und lesbaren JS-Code.
&&
ist logisch UND
Es erwartet zwei Argumente und gibt zurück:
- Erster Begriff, der als falsch ausgewertet wird
- Letzter Term anders (wenn alle wahr sind-y)
Hier sind einige Beispiele:
0 && false 0 (both are false-y, but 0 is the first)
true && false false (second one is false-y)
true && true true (both are true-y)
true && 20 20 (both are true-y)
Wenn Sie es immer nur auf Boolean verwenden, ist dies genau der AND-Operator aus der mathematischen Logik.
&&
Verkettung des Bedieners
Der Grund, warum dieser Operator wie oben definiert ist, ist die Verkettung des Operators. Sie können diesen Operator verketten und trotzdem die oben genannten Regeln einhalten.
true && 20 && 0 && 100 0 (it is the first false-y)
10 && 20 && true && 100 100 (last one, since all are true-y)
&&
Kurzschluss
Wie aus der Definition hervorgeht, müssen Sie sich nicht um die folgenden Begriffe kümmern, sobald Sie feststellen, dass ein Begriff falsch ist. Javascript geht noch einen Schritt weiter, die Begriffe werden nicht einmal bewertet. Dies wird als Kurzschluss bezeichnet.
true && false && alert("I am quiet!")
Diese Anweisung alarmiert nichts und false
wird zurückgegeben. Daher können Sie den &&
Operator als kürzeren Ersatz für eine if-Anweisung verwenden. Diese sind gleichwertig:
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
Fast alle JS-Kompressoren verwenden diesen Trick, um 2 Bytes zu sparen.