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 "===")?
Comment vérifier une variable si c'est null
ou undefined
et quelle est la différence entre le null
et undefined
?
Quelle est la différence entre ==
et ===
(il est difficile de rechercher sur Google "===")?
Réponses:
Comment vérifier une variable si c'est
null
ouundefined
...
La variable est-elle null
:
if (a === null)
// or
if (a == null) // but see note below
... mais notez que ce dernier sera également vrai s'il l' a
est undefined
.
Est-ce undefined
:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
... mais encore une fois, notez que le dernier est vague; ce sera également vrai si tel a
est le cas null
.
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 :
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
Ceci est défini par ToBoolean dans la spécification.
... et quelle est la différence entre le
null
etundefined
?
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 valeur undefined
; il y a une différence entre appeler une fonction avec la valeur undefined
d'un argument et laisser cet argument complètement.)
null
est légèrement plus spécifique que undefined
: 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'utilisons null
, non undefined
. 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), soit null
(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, et undefined
est la seule valeur dans le type Undefined.
Quelle est la différence entre "==" et "==="
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 est false
. 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")===
)if (a) { ... }
signifierait «si a
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
quand node
est le dernier élément de son parent, ou getElementById
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 une null
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 de typeof 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 concernant undefined
! == 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éclarez var a;
par exemple, ce a
sera le cas undefined
, car aucune valeur ne lui a été affectée.
Mais si vous attribuez a = null;
alors, ce a
sera désormais le cas null
. En JavaScript null
est un objet (essayez typeof null
dans une console JavaScript si vous ne me croyez pas), ce qui signifie que null est une valeur (en fait même undefined
est une valeur).
Exemple:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
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:
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
Si vous omettez le optional
paramètre doSomething(1, 2) then
facultatif sera la "three"
chaîne mais si vous passez doSomething(1, 2, null)
alors facultatif sera null
.
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 que 0 == "0"
cela reviendra vrai; while 0 === "0"
renverra false, car un nombre n'est pas une chaîne.
Vous pouvez utiliser ces opérateurs pour vérifier entre undefined
un null
. Par exemple:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
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:
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
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 avec undefined
ou typeof
. Pour diverses raisons , je préfère typeof x === "undefined"
.null
et undefined
en les utilisant ==
et en vous appuyant sur elles, ce qui signifie x == null
exactement ce que vous voulez.==
et ===
est que si les opérandes sont de types différents, ===
retournera toujours false
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 la typeof
comparaison ci-dessus), ==
et ===
se comporteront exactement de la même manière.Plus de lecture:
Comment puis-je vérifier une variable si elle est nulle ou non définie
vérifiez simplement si une variable a une valeur valide comme celle-ci:
if(variable)
il retournera vrai si la variable ne contient pas:
indéfini
Cela signifie que la variable n'est pas encore initialisée.
Exemple :
var x;
if(x){ //you can check like this
//code.
}
est égal à (==)
Il vérifie uniquement que la valeur est égale à pas le type de données.
Exemple :
var x = true;
var y = new Boolean(true);
x == y ; //returns true
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 :
var x = true;
var y = new Boolean(true);
x===y; //returns false.
Parce qu'il vérifie que le type de données x est un type primitif et y est un objet booléen.
L'annonce 1. null
n'est pas un identifiant pour une propriété de l'objet global, comme undefined
peut l'être
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 ! == )
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
et undefined
(comme différents navigateurs vous donneront des résultats différents), vous utiliseriez la comparaison moins restrictive: par exemple:
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
Cela capturera à la fois null
etundefined
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.
function myFunction() {
var data; //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
//If data has valid value
alert("data "+data);
}
else
{
//If data has null, blank, undefined, zero etc.
alert("data is "+data);
}
}
==
et===
est bien décrite ici .