Je sais que ci-dessous sont les deux façons en JavaScript de vérifier si une variable ne l'est pas null
, mais je ne sais pas quelle est la meilleure pratique à utiliser.
Devrais-je:
if (myVar) {...}
ou
if (myVar !== null) {...}
Je sais que ci-dessous sont les deux façons en JavaScript de vérifier si une variable ne l'est pas null
, mais je ne sais pas quelle est la meilleure pratique à utiliser.
Devrais-je:
if (myVar) {...}
ou
if (myVar !== null) {...}
Réponses:
Ils ne sont pas équivalents. Le premier exécutera le bloc suivant l'
if
instruction ifmyVar
est véridique (c'est-à-dire qu'il évalue àtrue
au conditionnel), tandis que le second exécutera le bloc if avecmyVar
une valeur autre quenull
.Les seules valeurs qui ne sont pas véridiques en JavaScript sont les suivantes (alias valeurs de falsification ):
null
undefined
0
""
(la chaîne vide)false
NaN
la source
Voici comment tester si une variable n'est pas NULL:
if (myVar !== null) {...}
le bloc sera exécuté si myVar n'est pas nul .. il sera exécuté si myVar n'est pas défini ou faux ou
0
ouNaN
ou autre chose ..la source
("")
et non définie. Voir mon violon comme référence: jsfiddle.net/b0tm7yafLisez cet article: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Il contient de bons conseils pour JavaScript en général, mais il mentionne que vous devez vérifier la valeur null comme:
Il mentionne également ce qui est considéré comme un «falsey» que vous pourriez ne pas réaliser.
la source
if(myVar) { code }
ne sera PAS exécuté uniquement lorsqu'ilmyVar
est égal à:false, 0, "", null, undefined, NaN
ou vous n'avez jamais défini de variablemyVar
(puis, en outre, le code arrête l'exécution et lève une exception).if(myVar !== null) {code}
ne sera PAS exécuté uniquement lorsqu'ilmyVar
est égal ànull
ou que vous ne l'avez jamais défini (lève une exception).Ici, vous avez tout ( src )
si
== (sa négation ! = )
=== (sa négation ! == )
la source
Il y a un autre scénario possible que je viens de rencontrer.
J'ai fait un appel ajax et j'ai récupéré les données comme nulles, dans un format de chaîne. J'ai dû le vérifier comme ceci:
Ainsi, null était une chaîne qui disait "null" plutôt que d'être réellement nulle.
EDIT: Il faut comprendre que je ne vends pas cela comme la façon dont cela devrait être fait. J'avais un scénario où c'était la seule façon de le faire. Je ne sais pas pourquoi ... peut-être que le gars qui a écrit le back-end présentait les données de manière incorrecte, mais quoi qu'il en soit, c'est la vraie vie. Il est frustrant de voir ce vote négatif par quelqu'un qui comprend que ce n'est pas tout à fait correct, puis de voter positivement par quelqu'un, cela aide réellement.
la source
null
chaînes.value = JSON.parse(value)
et ensuite utiliser levalue != null
test simple et appropriési
myVar
est nul alors si le bloc ne s'exécute pas autrement, il s'exécutera.if (myVar != null) {...}
la source
'null'
, mais la valeur spécialenull
.Parfois, si ce n'était même pas défini, il vaut mieux être préparé. Pour cela, j'ai utilisé typeof
la source
Les deux instructions conditionnelles que vous listez ici ne sont pas meilleures l'une par rapport à l'autre. Votre utilisation dépend de la situation. Vous avez d'ailleurs une faute de frappe dans le 2ème exemple. Il ne doit y avoir qu'un seul signe égal après le point d'exclamation.
Le 1er exemple détermine si la valeur de myVar est vraie et exécute le code à l'intérieur du {...}
Le 2ème exemple évalue si myVar n'est pas égal à null et si ce cas est vrai, il exécutera votre code à l'intérieur du {...}
Je suggère de jeter un œil aux instructions conditionnelles pour plus de techniques. Une fois que vous les connaissez, vous pouvez décider quand vous en avez besoin.
la source
=
est cruciale et fait une énorme différence dans la question. Peut-être n'êtes-vous pas au courant de l'existence!==
et des===
opérateurs en JavaScript?