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 ifAnweisungen verwenden. logische Operatoren wie ||, !oder &&; oder die Boolean()Funktion.
Die Boolean()Funktion akzeptiert einen Wert und gibt entweder trueoder 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 , trueoder false, so dass der Rückgabewert Boolean() muss entweder trueoder false. In diesem Fall haben wir den Wert übergeben 1und wenn er als Boolescher Wert ausgewertet wird, 1ist 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, falsedie 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 trueals Boolescher Wert ausgewertet wird. Jeder andere Wert in JavaScript ist also wahr.
Eine andere einfache Möglichkeit, etwas als zu bewerten, booleanist die Verwendung des !Operators. Genau wie die BooleanFunktion wertet dies einen Wert als Booleschen Wert aus. Aber wahrheitsgemäße Werte werden falseund 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 fieldsals 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