Risposta breve:
No , non sono la stessa cosa.
Ma questo:
if (!fields) {
...
}
È lo stesso di questo:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Risposta lunga (e migliore):
Parliamo prima dei valori di verità e falsità.
Riguarda cosa succede quando valuti qualcosa come un booleano. In JavaScript, questo succede quando usi cose come if
statement; operatori logici come ||
, !
o &&
; o la funzione Boolean()
.
La funzione Boolean()
accetta un valore e restituisce true
o false
.
Ad esempio:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Vai avanti e prova questo in un nodo repl.
Un valore booleano può essere solo true
o false
, quindi il valore di ritorno di Boolean()
deve essere true
o false
. In questo caso, abbiamo passato il valore 1
, e quando valutato come booleano, 1
è true
.
Importante: se valutato come booleano, un valore deve essere vero o falso. Quelle sono le uniche due opzioni.
In JavaScript, ci sono solo 6 valori falsy. Valori che saranno false
se valutati come booleani. Sono: false
, 0
, ""
, null
, undefined
e NaN
. Quindi se qualcuno di questi valori viene valutato come booleano, sarà falso:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Questo significa che qualsiasi altro valore, in JavaScript, sarà true
se valutato come booleano. Quindi ogni altro valore in JavaScript è vero.
Un altro modo semplice per valutare qualcosa come boolean
è usando l'operatore !
. Proprio come la funzione Boolean
, questo valuta un valore come booleano. Ma i valori di verità diventano false
e i valori di falsy diventano true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Ancora una volta, prova questo in un nodo repl o qualcosa per assicurarti di aver capito.
Quindi questa affermazione:
if (!fields) {
...
}
Sta dicendo il seguente: "se fields
, quando valutato come booleano, è falso, quindi esegui il codice all'interno di questa istruzione if".
Per quanto riguarda la prima affermazione:
var fields = options.fields || ['id', 'query'];
Stai lavorando con l'operatore logico OR, che vale la pena leggere per assicurarti di aver capito. link