Kurze Antwort:
Nein , sie sind nicht gleich.
Aber dieses:
if (!fields) {
...
}
Ist das gleiche wie das:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Lange (und bessere) Antwort:
Lassen Sie uns zuerst über wahrheitsgemäße und falsche Werte sprechen.
Es geht darum, was passiert, wenn Sie etwas als Booleschen Wert bewerten. In JavaScript geschieht dies, wenn Sie beispielsweise if
Anweisungen verwenden. logische Operatoren wie ||
, !
oder &&
; oder die Boolean()
Funktion.
Die Boolean()
Funktion akzeptiert einen Wert und gibt entweder true
oder zurück false
.
Zum Beispiel:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Versuchen Sie dies in einer Knotenreplikation.
Ein boolean kann nur sein , true
oder false
, so dass der Rückgabewert Boolean()
muss entweder true
oder false
. In diesem Fall haben wir den Wert übergeben 1
und wenn er als Boolescher Wert ausgewertet wird, 1
ist true
.
Wichtig: Bei der Auswertung als Boolescher Wert muss ein Wert entweder wahr oder falsch sein. Dies sind die einzigen beiden Optionen.
In JavaScript gibt es nur 6 falsche Werte. Werte, false
die als Boolescher Wert ausgewertet werden. Sie sind: false
, 0
, ""
, null
, undefined
, und NaN
. Wenn einer dieser Werte als Boolescher Wert ausgewertet wird, ist er falsch:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Dies bedeutet, dass jeder andere Wert in JavaScript true
als Boolescher Wert ausgewertet wird. Jeder andere Wert in JavaScript ist also wahr.
Eine andere einfache Möglichkeit, etwas als zu bewerten, boolean
ist die Verwendung des !
Operators. Genau wie die Boolean
Funktion wertet dies einen Wert als Booleschen Wert aus. Aber wahrheitsgemäße Werte werden false
und fälschliche Werte werden true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Probieren Sie dies erneut in einer Knotenreplikation oder etwas anderem aus, um sicherzustellen, dass Sie es verstehen.
Also diese Aussage:
if (!fields) {
...
}
Sagt Folgendes: "Wenn es fields
als Boolescher Wert falsch ist, führen Sie den Code in dieser if-Anweisung aus."
Wie für Ihre erste Aussage:
var fields = options.fields || ['id', 'query'];
Sie arbeiten mit dem logischen ODER-Operator, über den Sie unbedingt lesen sollten, um sicherzustellen, dass Sie ihn verstehen. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators