Javascript UND operator in assignment
Ich weiß, dass in JavaScript, die Sie tun können:
var oneOrTheOther = someOtherVar || "these are not the droids you are looking for...";
wo die variable oneOrTheOther
wird auf den Wert des ersten Ausdrucks, wenn es nicht null
, undefined
oder false
. In dem Fall wird es zugeordnet, der Wert der zweiten Anweisung.
Jedoch nicht, was die variable oneOrTheOther
zugewiesen bekommen, wenn wir mit der logischen UND-operator?
var oneOrTheOther = someOtherVar && "some string";
Was passieren würde, wenn someOtherVar
ist nicht falsch?
Was würde passieren, wenn someOtherVar
ist falsch?
Einfach JavaScript lernen, und ich bin neugierig, was passieren würde mit der Abtretung in Verbindung mit dem UND-operator.
Versuchen Sie es. jsfiddle.net/uv6LR
siehe meine Antwort aus einem entsprechenden post.. stackoverflow.com/questions/3088098/...
In deinem Beispiel, wenn someOtherVar ist nicht definiert, es wird keinen Fehler werfen. Mit Fenster.someOtherVar wird es ermöglichen, um auf den zweiten Wert, wenn es someOtherVar ist nicht definiert.
siehe meine Antwort aus einem entsprechenden post.. stackoverflow.com/questions/3088098/...
In deinem Beispiel, wenn someOtherVar ist nicht definiert, es wird keinen Fehler werfen. Mit Fenster.someOtherVar wird es ermöglichen, um auf den zweiten Wert, wenn es someOtherVar ist nicht definiert.
InformationsquelleAutor Alex | 2010-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich die Logische UND-operator (
&&
), wird wieder der Wert des zweiten Operanden, wenn die erste truthy, und es wird der Wert des ersten Operanden, wenn es von selbst falsy, zum Beispiel:Beachten Sie, dass falsy Werte sind diejenigen, zwingen zu
false
wenn verwendet, im booleschen Kontext, Sie sindnull
,undefined
,0
,NaN
ist, wird eine leere Zeichenfolge, und natürlichfalse
, nichts anderes zwingt zurtrue
.Also, wenn Sie Sie mit Boolean-Werte, && gibt true zurück, wenn beide Operanden wahr sind; andernfalls gibt Sie false zurück. (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...)
Ich Liebe die Beispiel. Es wäre toll, wenn Sie möchten, fügen ein wenig über
&&
genannt 'guard' - operator, die gut für null-Prüfungen, das ist gut, den Kontext zu haben. Man könnte sogar anführen Douglas Crockford hier: javascript.crockford.com/survey.htmlInformationsquelleAutor CMS
&&
wird manchmal als guard Betreiber.kann es verwendet werden, um den Wert nur dann, wenn der Indikator ist truthy.
InformationsquelleAutor mykhal
Zitieren Douglas Crockford1:
1 Douglas Crockford: JavaScript: Die Guten Teile - Seite 16
InformationsquelleAutor Daniel Vassallo
Anfänger Beispiel
Wenn Sie versuchen, Zugriff auf "Benutzer.name" aber dann passiert das:
Angst nicht. Sie können dies lösen, mit der && operator in einer Zuweisung oder oft als die guard operator da es "Wachen" aus dem undefinierten Fehler passiert.
Hier sind einige Beispiele, die Sie finden möglicherweise seltsam, aber Lesen Sie weiter, wie es später erklärt wird.
Erklärung: In der Wache Betrieb, jeder Begriff ist ausgewertet von Links nach rechts nacheinander. Wenn ein Wert evaluiert wird falsy, wird die Bewertung beendet und dieser Wert wird dann zugewiesen. Wenn das Letzte Element erreicht ist, ist es dann zugewiesen, ob oder nicht es ist falsy.
falsy bedeutet, es ist einer dieser Werte
undefined, false, 0, null, NaN, ''
und truthy bedeutet nur, NICHT falsy.Easy button für die Guard-Methode
Verwenden, lodash schöne guard-operator zum Zugriff auf verschachtelte Daten etwa so:
als es mit der && Zeug unter der Haube, während Sie schön in eine praktische Methode. Lodash _.get source code
Bonus: Der ODER-Operator
Andere nützliche seltsame Zuordnung, ist im praktischen Einsatz ist die ODER Betreiber, die in der Regel verwendet für die plugins so:
wird nur die Zuordnung der code-Teil, wenn "diese.myWidget" ist falsy. Dies ist praktisch, denn Sie können erklären, code, überall und mehrfach nicht zu kümmern, wenn seine zugewiesen wurde oder nicht vorher wissen, es wird nur einmal vergeben werden, da die Menschen mit einem plugin versehentlich erklären sich mit den Skript-Tags src-mehrere Male.
Erklärung: Jeder Wert ist bewertet von von Links nach rechts, ein zu einer Zeit. Wenn ein Wert truthy ist, Stoppt es die Bewertung ein und weist diesen Wert, ansonsten immer wieder, wenn das Letzte Element erreicht ist, so erhält es unabhängig davon, ob es ist falsy oder nicht.
Extra Credit: die Kombination && und || in einen Auftrag
Haben Sie jetzt die ultimative macht und können tun sehr seltsame Dinge wie diese sehr merkwürdige Beispiel, mit es in ein Palindrom.
In der Tiefe Erklärung hier: Palindrom überprüfen in Javascript
Happy coding.
Danke für diese Antwort! Ich bin neugierig, wie lange wird JS zu halten versuchen, auf den tiefsten level-Eigenschaft? Zum Beispiel, wenn Sie wurden auf eine Antwort warten zu Ihrem hit back-End, ist es sicher zu bedienen
var x = y && y.z
?InformationsquelleAutor Jason Sebring
Laut Kommentierte ECMAScript 5.1 Abschnitt 11.11:
Im Fall der Logischen ODER-operator(||),
In dem gegebenen Beispiel,
var oneOrTheOther = someOtherVar || "dies sind nicht die Droiden, die Sie suchen...move along";
Das Ergebnis wäre der Wert von someOtherVar, wenn Boolean(someOtherVar) ist wahr.(Beziehen Sie bitte sich. Truthiness eines Ausdrucks). Wenn es false ist, das Ergebnis wäre "dies sind nicht die Droiden, die Sie suchen...move along";
Und Im Falle des Logischen UND-operator(&&),
In dem gegebenen Beispiel,
Fall 1: wenn Boolean(someOtherVar) ist falsch: es wird der Wert des someOtherVar.
Fall 2: wenn Boolean(someOtherVar) ist wahr: es gibt "das sind nicht die Droiden, die Sie suchen...move along".
InformationsquelleAutor BatScream
Ich gesehen habe && überstrapaziert hier bei der Arbeit für Zuweisungsanweisungen. Das Anliegen ist ein zweifaches:
1) Die 'Anzeige' check ist manchmal eine Funktion mit dem overhead, dass Entwickler nicht für.
2) Es ist einfach für Entwickler, um zu sehen, das als ein Sicherheits-check und nicht, berücksichtigen Sie bei der Zuordnung falsch, zu deren var. Ich möchte, dass Sie haben eine Typ-sichere Einstellung, also habe ich Sie, dies ändern:
var currentIndex = App.instance && App.instance.rightSideView.getFocusItemIndex();
:
var currentIndex = App.instance && App.instance.rightSideView.getFocusItemIndex() || 0;
so bekommen Sie einen integer als erwartet.
InformationsquelleAutor Drew Deal