&
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.
&&
gibt den ersten Wert zurück, wenn er false-y ist, und ansonsten den zweiten Wert.&
ist das bitweise "und". Dies bedeutet, dass wenn Sie zwei Zahlen in Binärzahlen konvertiert haben, das Ergebnis eine Zahl ist, deren1
Ziffer an den Positionen steht, an denen beide Zahlen stehen1
.100011 //35 & 111001 //57 --------- 100001 //35 & 57 == 33
quelle
Um festzustellen, ob zwei zusammengesetzte boolesche Werte wahr oder falsch sind, können Sie den
&
Operator verwenden , wenn Sie beide überprüfen möchten (z. B. Validierung auf der Webseite) .&
ist bitweise UND.Wenn der
&&
Bediener feststellt, dass der erste Wert falsch ist, wird die Auswertung beendet und der zweite Wert nicht überprüft.quelle
&
), wenn Sie mit booleschen Werten arbeiten. Informationen zur angemessenen Verwendung dieses Operators finden Sie in den anderen Antworten.Bei all den hohen, detaillierten Einsichten haben sie meistens die Wahrheit übersehen, dass es eine bedingte Bewertung gibt, bei der NUR die Single & funktionieren wird. Die Antwort des praktischen Laien, die meinen Kopfschlag auf einer IF-Anweisungszeichenfolge von MULTIPLE verkettet && jeder! == auf eine Bedingung löste, verursachte einen FEHLER und musste das einzelne & legitim verwenden. Ich danke Jake Wayne (und Russ) für ihre zu Unrecht herabgestimmte Antwort, die es richtig gemacht hat, da es mehr als eine && gibt! == es hat seine Bewertung bereits eingestellt und geht nicht weiter, nachdem die erste Bewertung gefunden wurde ==!. Mit dem && glaubt es, dass seine Arbeit erledigt ist, nachdem die erste Bewertung zeigt! == [z. falsch]. Mein fehlerhafter Code war
IF ((sessionStorage.myLable !== "LableStringA") && (sessionStorage.myLable !== "LableStringB") && (sessionStorage.myLableZ !== "LableStringA") && (sessionStorage.myLableZ !== "LableStringB")) { ...)
Hier war das richtige Ersetzen und Verwenden eines einzelnen & für das && sowohl praktisch in der realen Welt als auch technisch die richtige Antwort. Nochmals vielen Dank an Jake Wayne (und Russ) für den Einblick und das Verständnis von Code.
quelle
if (!(sessionStorage.myLable === "LableStringA" || sessionStorage.myLable === "LableStringB") || !(sessionStorage.myLableZ === "LableStringA" || sessionStorage.myLableZ === "LableStringB")) { // fail validation}
, dass klarer zu sein scheint, was Sie beabsichtigen (ich gehe davon aus, dass Sie sicherstellen möchten, dass die Werte von myLable einer der beiden Werte sind, oder die Validierung fehlschlagen). . Sofern Ihre Erkrankungen keine Nebenwirkungen haben, gibt es keinen Grund, sie alle zu bewerten. Der Operator arbeitet wie beabsichtigt, aber Ihre Logik wurde umgedreht