Réponse courte:
Non , ce ne sont pas les mêmes.
Mais ça:
if (!fields) {
...
}
Est la même que celle-ci:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Réponse longue (et meilleure):
Parlons d'abord des valeurs véridiques et fausses.
Tout dépend de ce qui se passe lorsque vous évaluez quelque chose en tant que booléen. En JavaScript, cela se produit lorsque vous utilisez des éléments tels que des if
instructions; opérateurs logiques aiment ||
, !
ou &&
; ou la Boolean()
fonction.
La Boolean()
fonction accepte une valeur et retourne soit true
ou false
.
Par exemple:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Allez-y et essayez ceci dans un repl de noeud.
Un booléen ne peut être que true
ou false
, donc la valeur de retour de Boolean()
doit être soit true
ou false
. Dans ce cas, nous avons transmis la valeur 1
et, lorsqu'elle est évaluée comme booléenne, 1
est true
.
Important: lorsqu'elle est évaluée en tant que booléen, une valeur doit être vraie ou fausse. Ce sont les deux seules options.
En JavaScript, il n'y a que 6 valeurs de falsification. Valeurs qui seront false
évaluées comme booléennes. Ils sont: false
, 0
, ""
, null
, undefined
et NaN
. Donc, si l'une de ces valeurs est évaluée comme un booléen, elle sera fausse:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Cela signifie que toute autre valeur, en JavaScript, sera true
évaluée en tant que booléen. Donc, toutes les autres valeurs de JavaScript sont véridiques.
Un autre moyen simple d'évaluer quelque chose en tant que tel boolean
est d'utiliser l' !
opérateur. Tout comme la Boolean
fonction, cela évalue une valeur en tant que booléen. Mais les valeurs véridiques deviennent false
et les valeurs fausses deviennent true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Encore une fois, essayez ceci dans un nœud repl ou quelque chose pour vous assurer que vous comprenez.
Donc, cette déclaration:
if (!fields) {
...
}
Dit ce qui suit: "si fields
, lorsqu'il est évalué en tant que booléen, est faux, exécutez le code à l'intérieur de cette instruction if."
Quant à votre première déclaration:
var fields = options.fields || ['id', 'query'];
Vous travaillez avec l'opérateur logique OU, ce qui vaut la peine d'être lu pour vous assurer que vous comprenez. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators