Comment vérifier une variable si c'est
null
ouundefined
et quelle est la différence entre lenull
etundefined
?Quelle est la différence entre
==
et===
(il est difficile de rechercher sur Google "===")?
javascript
null
undefined
MUG4N
la source
la source
==
et===
est bien décrite ici .Réponses:
La variable est-elle
null
:... mais notez que ce dernier sera également vrai s'il l'
a
estundefined
.Est-ce
undefined
:... mais encore une fois, notez que le dernier est vague; ce sera également vrai si tel
a
est le casnull
.Maintenant, malgré ce qui précède, la façon habituelle de vérifier ces derniers est d'utiliser le fait qu'ils sont falsey :
Ceci est défini par ToBoolean dans la spécification.
Ce sont deux valeurs généralement utilisées pour indiquer l'absence de quelque chose.
undefined
est la plus générique, utilisée comme valeur par défaut des variables jusqu'à ce qu'elles reçoivent une autre valeur, comme valeur des arguments de fonction qui n'étaient pas fournis lors de l'appel de la fonction, et comme valeur que vous obtenez lorsque vous demandez à un objet pour une propriété qu'il n'a pas. Mais il peut également être explicitement utilisé dans toutes ces situations. (Il y a une différence entre un objet qui n'a pas de propriété et la propriété avec la valeurundefined
; il y a une différence entre appeler une fonction avec la valeurundefined
d'un argument et laisser cet argument complètement.)null
est légèrement plus spécifique queundefined
: C'est une référence d'objet vide. JavaScript est typé de manière lâche, bien sûr, mais toutes les choses avec lesquelles JavaScript interagit ne sont pas typées de manière lâche. Si une API comme le DOM dans les navigateurs a besoin d'une référence d'objet vide, nous l'utilisonsnull
, nonundefined
. De même, l'getElementById
opération du DOM renvoie une référence d'objet - soit une référence valide (si elle a trouvé l'élément DOM), soitnull
(si ce n'est pas le cas).Fait intéressant (ou non), ce sont leurs propres types. C'est-à-dire,
null
est la seule valeur dans le type Null, etundefined
est la seule valeur dans le type Undefined.La seule différence entre eux est que
==
cela forcera le type à essayer d'obtenir les valeurs correspondantes, et===
ne le fera pas. Ainsi, par exemple,"1" == 1
est vrai, car"1"
contraint à1
. Mais"1" === 1
c'est faux , car les types ne correspondent pas. ("1" !== 1
est vrai.) La première (vraie) étape===
est "Les types d'opérandes sont-ils les mêmes?" et si la réponse est "non", le résultat estfalse
. Si les types sont les mêmes, il fait exactement ce qui==
fait.La contrainte de type utilise des règles assez complexes et peut avoir des résultats surprenants (par exemple,
"" == 0
c'est vrai).Plus dans la spécification:
==
, également appelée égalité "lâche")===
)la source
if (a) { ... }
signifierait «sia
est véridique», où «véridique» est une valeur de chaîne non nulle, non nulle, non indéfinie, non fausse et non vide. :-)null
n'est pas un objet , c'est une référence d'objet signifiant "pas d'objet". C'est important, car c'est ce qui est utilisé avec les interfaces fournies par l'hôte quand elles fournissent des références d'objet mais n'en ont pas à fournir (par exemple,node.nextSibling
quandnode
est le dernier élément de son parent, ougetElementById
quand il n'y a aucun élément avec cet ID). La technologie utilisée par l'hôte pour cela peut ne pas être aussi flexible que JavaScript concerne les types de variable / propriété, il était donc nécessaire d'avoir unenull
référence obj (par opposition àundefined
).typeof null
renvoyer "objet" a du sens. La seule autre valeur qui aurait du sens serait "null", car elle devrait certainement renvoyer quelque chose de différent detypeof undefined
. null représente une référence d'objet null, ce qui, à tout le moins, signifie que la variable qui la contient est destinée à un certain type d '«objet». Si c'était une erreur, c'était une bonne erreur. Quoi qu'il en soit, en ce qui concerne la réponse, l'astuce concernantundefined
! ==undefined
lors des scripts entre fenêtres est bonne à savoir, en particulier à des fins de débogage.La différence est subtile.
En JavaScript, une
undefined
variable est une variable qui n'a jamais été déclarée ou n'a jamais affecté de valeur. Disons que vous déclarezvar a;
par exemple, cea
sera le casundefined
, car aucune valeur ne lui a été affectée.Mais si vous attribuez
a = null;
alors, cea
sera désormais le casnull
. En JavaScriptnull
est un objet (essayeztypeof null
dans une console JavaScript si vous ne me croyez pas), ce qui signifie que null est une valeur (en fait mêmeundefined
est une valeur).Exemple:
Cela peut s'avérer utile dans les arguments de fonction. Vous pouvez vouloir avoir une valeur par défaut, mais considérez null comme acceptable. Dans ce cas, vous pouvez faire:
Si vous omettez le
optional
paramètredoSomething(1, 2) then
facultatif sera la"three"
chaîne mais si vous passezdoSomething(1, 2, null)
alors facultatif seranull
.Quant aux comparateurs égaux
==
et strictement égaux===
, le premier est de type faible, tandis que strictement égal vérifie également le type de valeurs. Cela signifie que0 == "0"
cela reviendra vrai; while0 === "0"
renverra false, car un nombre n'est pas une chaîne.Vous pouvez utiliser ces opérateurs pour vérifier entre
undefined
unnull
. Par exemple:Le dernier cas est intéressant, car il permet de vérifier si une variable est soit indéfinie, soit nulle et rien d'autre:
la source
La spécification est l'endroit où aller pour obtenir des réponses complètes à ces questions. Voici un résumé:
x
, vous pouvez:null
par comparaison directe avec===
. Exemple:x === null
undefined
par l'une des deux méthodes de base: comparaison directe avecundefined
outypeof
. Pour diverses raisons , je préfèretypeof x === "undefined"
.null
etundefined
en les utilisant==
et en vous appuyant sur elles, ce qui signifiex == null
exactement ce que vous voulez.==
et===
est que si les opérandes sont de types différents,===
retournera toujoursfalse
while==
convertira un ou les deux opérandes dans le même type en utilisant des règles qui conduisent à un comportement légèrement peu intuitif. Si les opérandes sont du même type (par exemple, les deux sont des chaînes, comme dans latypeof
comparaison ci-dessus),==
et===
se comporteront exactement de la même manière.Plus de lecture:
la source
vérifiez simplement si une variable a une valeur valide comme celle-ci:
il retournera vrai si la variable ne contient pas:
la source
indéfini
Cela signifie que la variable n'est pas encore initialisée.
Exemple :
est égal à (==)
Il vérifie uniquement que la valeur est égale à pas le type de données.
Exemple :
Parce qu'il vérifie uniquement la valeur.
Strict Equals (===)
Vérifie que la valeur et le type de données doivent être identiques.
Exemple :
Parce qu'il vérifie que le type de données x est un type primitif et y est un objet booléen.
la source
L'annonce 1.
null
n'est pas un identifiant pour une propriété de l'objet global, commeundefined
peut l'êtreAfficher l'extrait de code
Annonce 2. Les
===
valeurs et types de contrôle. Ils==
ne nécessitent pas les mêmes types et ont effectué une conversion implicite avant la comparaison (en utilisant.valueOf()
et.toString()
). Ici, vous avez tout ( src ):si
== (sa négation ! = )
=== (sa négation ! == )
la source
document.all == null
etdocument.all !== null
Si votre vérification (logique) est pour une négation (!) Et que vous souhaitez capturer à la fois JS
null
etundefined
(comme différents navigateurs vous donneront des résultats différents), vous utiliseriez la comparaison moins restrictive: par exemple:Cela capturera à la fois
null
etundefined
la source
Essayez avec une logique différente . Vous pouvez utiliser le code ci-dessous pour vérifier les quatre (4) conditions de validation comme non nul, non vide, non indéfini et non nul uniquement utiliser ce code (! (! (Variable))) en javascript et jquery.
}
la source