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 ifdichiarazioni; operatori logici come ||, !o &&; o la Boolean()funzione.
La Boolean()funzione accetta un valore e restituisce trueo 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 trueo false, quindi il valore restituito di Boolean() deve essere trueo false. In questo caso, abbiamo passato il valore 1e, 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 falsevalutati 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à truevalutato quando booleano. Quindi ogni altro valore in JavaScript è veritiero.
Un altro modo semplice per valutare qualcosa come booleanè usando l' !operatore. Proprio come la Booleanfunzione, questo valuta un valore come un valore booleano. Ma i valori della verità diventano falsee 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