Risposta breve:
No , non sono gli stessi.
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à.
Si tratta di cosa succede quando si valuta qualcosa come un valore booleano. In JavaScript, questo accade quando si usano cose come le if
dichiarazioni; operatori logici come ||
, !
o &&
; o la Boolean()
funzione.
La Boolean()
funzione accetta un valore e restituisce true
o false
.
Per esempio:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Vai avanti e prova questo in un nodo di sostituzione.
Un valore booleano può essere solo true
o false
, quindi il valore restituito di Boolean()
deve essere true
o false
. In questo caso, abbiamo passato il valore 1
e, quando valutato come booleano, lo 1
è true
.
Importante: se valutato come un valore booleano, un valore deve essere vero o falso. Quelle sono le uniche due opzioni.
In JavaScript, ci sono solo 6 valori falsi. Valori che verranno false
valutati come booleani. Essi sono: false
, 0
, ""
, null
, undefined
, e NaN
. Quindi, se uno di questi valori viene valutato come booleano, saranno falsi:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Ciò significa che qualsiasi altro valore, in JavaScript, sarà true
valutato quando booleano. Quindi ogni altro valore in JavaScript è veritiero.
Un altro modo semplice per valutare qualcosa come boolean
è usando l' !
operatore. Proprio come la Boolean
funzione, questo valuta un valore come un valore booleano. Ma i valori della verità diventano false
e i valori della falsità diventano true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Ancora una volta, prova questo in un nodo di sostituzione o qualcosa per assicurarti di capire.
Quindi questa affermazione:
if (!fields) {
...
}
Sta dicendo quanto segue: "if fields
, se valutato come booleano, è falso, quindi esegui il codice all'interno di questa istruzione if".
Per quanto riguarda la tua prima affermazione:
var fields = options.fields || ['id', 'query'];
Stai lavorando con l'operatore logico OR, che vale la pena leggere per accertarti di aver capito. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators