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 if myVar
est véridique (c'est-à-dire qu'il évalue à true
au conditionnel), tandis que le second exécutera le bloc if avec myVar
une valeur autre que null
.
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
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
ou NaN
ou autre chose ..
("")
et non définie. Voir mon violon comme référence: jsfiddle.net/b0tm7yaf
Lisez 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:
if(myvar) { }
Il mentionne également ce qui est considéré comme un «falsey» que vous pourriez ne pas réaliser.
if(myVar) { code }
ne sera PAS exécuté uniquement lorsqu'il myVar
est égal à: false, 0, "", null, undefined, NaN
ou vous n'avez jamais défini de variable myVar
(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'il myVar
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 ! == )
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:
if(value != 'null'){}
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.
null
chaînes.
value = JSON.parse(value)
et ensuite utiliser le value != 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) {...}
'null'
, mais la valeur spéciale null
.
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.
=
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?