Wann sollte der double not (!!) Operator in JavaScript verwendet werden?
Verstehe ich was die Doppel-operator in JavaScript. Ich bin neugierig, es zu verwenden, obwohl, und ob oder nicht eine aktuelle Behauptung, die ich gemacht habe richtig ist.
Ich sagte, dass if (!!someVar)
ist nie sinnvoll, noch ist (!!someVar && ...
da sowohl die if
und die &&
verursachen someVar bewertet werden als eine Boolesche so !! ist überflüssig.
In der Tat, das einzige mal, dass ich denken konnte, es wäre legitim, verwenden Sie das double nicht Betreiber ist, wenn Sie wollte einen strikten Vergleich zu anderen booleschen Wert (also vielleicht in der Rückgabewert, erwartet true oder false explizit).
Ist das richtig? Ich begann zu zweifeln, als ich merkte, jQuery 1.3.2 eingesetzt, sowohl if (!!someVar)
und return !!someVar && ...
Macht die Doppel nicht eine tatsächliche Wirkung in diesen Situationen?
Meine persönliche Meinung ist, dass es führt nur zu Verwirrung. Wenn ich sehe, wie eine if-Anweisung, ich weiß, es ist bewerten ihn als boolean.
InformationsquelleAutor der Frage Keith Bentrup | 2010-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Rahmen der
if
- Anweisungen ich bin bei dir, es ist völlig sicher, weil intern dieToBoolean
Vorgang wird ausgeführt, auf der Bedingungsausdruck (siehe Schritt 3 auf die Skillung).Aber wenn Sie wollen, sagen wir, einen booleschen Wert zurück, der aus einer Funktion, sollten Sie sicherstellen, dass das Ergebnis tatsächlich boolean, zum Beispiel:
Im Abschluss, die Boolesche Logische Operatoren kann sich wieder ein operandund nicht ein
Boolean
Ergebnis unbedingt:Den Logischen UND-operator (
&&
), wird wieder der Wert der zweite operandwenn die erste wirklich:Und es wird wieder den Wert der erste operandwenn es von selbst falsy:
Auf der anderen Seite, ist der Logische ODER-operator (
||
) wird wieder der Wert der zweite operandwenn der erste ist falsy:Und es wird wieder den Wert der erste operandwenn es von selbst nicht falsy:
Vielleicht ist es erwähnenswert, dass die falsy Werte sind:
null
undefined
NaN
0
null-Länge-Zeichenfolge, und natürlichfalse
.Etwas anderes (das ist nicht falsyein
Boolean
Objekt oder eineBoolean
Wert), bewertet in boolean contextzurücktrue
.InformationsquelleAutor der Antwort CMS
Ja, !!var wird verwendet, wenn Sie wollen, 0||1 return Wert.
Ist einfacher Vergleich von bool-Werten, wenn du willst "a == b" ist äquivalent zu "a xor nicht b" mit Ausnahme von a=5 und b=7 würde beide wahr sein, aber nicht gleich sein.
Anderes ist es, wenn Sie wollen, zu zwingen, eine Reihe von Bedingungen, in bits einer variable:
Nicht sehr nützlich in Javascript, die Leben ziemlich weit von bit-Werte, kann aber nützlich sein in Zeiten.
InformationsquelleAutor der Antwort SF.