Respuesta corta:
No , no son lo mismo.
Pero esto:
if (!fields) {
...
}
Es lo mismo que esto:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Respuesta larga (y mejor):
Primero hablemos de los valores de verdad y falsedad.
Se trata de lo que sucede cuando evalúas algo como booleano. En JavaScript, esto sucede cuando usa cosas como if
declaraciones; operadores lógicos gusta ||
, !
o &&
; o la Boolean()
función.
La Boolean()
función acepta un valor y devuelve true
o false
.
Por ejemplo:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Siga adelante e intente esto en un nodo repl.
Un booleano solo puede ser true
o false
, por lo que el valor de retorno de Boolean()
debe ser true
o false
. En este caso, pasamos el valor 1
, y cuando se evalúa como booleano, 1
es true
.
Importante: cuando se evalúa como un valor booleano, un valor debe ser verdadero o falso. Esas son las únicas dos opciones.
En JavaScript, solo hay 6 valores falsos. Valores que serán false
cuando se evalúen como booleanos. Ellos son: false
, 0
, ""
, null
, undefined
, y NaN
. Entonces, si alguno de estos valores se evalúa como booleano, serán falsos:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Esto significa que cualquier otro valor, en JavaScript, se true
evaluará como booleano. Por lo tanto, cualquier otro valor en JavaScript es verdadero.
Otra manera fácil de evaluar algo como a boolean
es usando el !
operador. Al igual que la Boolean
función, esto evalúa un valor como booleano. Pero los valores verdaderos se vuelven false
y los valores falsos se vuelven true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Nuevamente, intente esto en una respuesta de nodo o algo para asegurarse de que comprende.
Entonces esta declaración:
if (!fields) {
...
}
Dice lo siguiente: "if fields
, cuando se evalúa como booleano, es falso, entonces ejecuta el código dentro de esta instrucción if".
En cuanto a su primera declaración:
var fields = options.fields || ['id', 'query'];
Está trabajando con el operador lógico OR, que vale la pena leer para asegurarse de que comprende. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators