2010-12-05 55 views
182

Je sais que ci-dessous sont les deux façons de JavaScript pour vérifier si une variable n'est pas null, mais je suis confus quelle est la meilleure pratique à utiliser.Comment vérifier si une variable n'est pas nulle?

dois-je faire:

if (myVar) {...} 

ou

if (myVar !== null) {...} 

Répondre

271

Ils ne sont pas équivalents. Le premier exécute le bloc qui suit l'instruction if si myVar est truthy (à savoir évalue à true dans une condition), tandis que le second exécute le bloc si myVar est une valeur autre que null.

Les seules valeurs qui ne sont pas truthy en JavaScript sont les suivants (aka falsy valeurs):

  • null
  • undefined
  • 0
  • "" (la chaîne vide)
  • false
  • NaN
40

avoir une lecture à ce poste: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

Il a quelques conseils de Nice pour JavaScript en général, mais une chose qu'il fait mention est que vous devriez vérifier null comme:

if(myvar) { } 

Il mentionne également ce qui est considéré comme «falsey» que vous pourriez ne pas réaliser.

+1

Merci pour Criez Jonathon;) –

+0

merci mate - simple et facile –

+25

Cette vérification est en fait pas en sécurité. Si myvar est 0, faux ou toute autre valeur falsifiée, le test échouera (si vous avez seulement l'intention de vérifier non null). Donc, utilisez uniquement ceci pour vérifier null si la variable ne peut jamais avoir une autre valeur falsifiée. – Werzi2001

-1

Les deux instructions conditionnelles que vous énumérez ici ne sont pas meilleures les unes que les autres. Votre utilisation dépend de la situation. Vous avez une faute de frappe dans le deuxième exemple. Il devrait y avoir un seul signe égal après le point d'exclamation.

Le 1er exemple détermine si la valeur maVar est vrai et exécute le code à l'intérieur de la {...}

Le 2ème exemple évalue si maVar ne correspond pas à nul et si cela cas est vrai il va exécuter votre code à l'intérieur de la {...}

Je suggère de jeter un oeil dans les déclarations conditionnelles pour plus de techniques. Une fois que vous êtes familier avec eux, vous pouvez décider quand vous en avez besoin.

+9

Ce n'est probablement pas une faute de frappe dans le second exemple. Cette seconde '=' est cruciale et fait une énorme différence à la question. Peut-être que vous n'êtes pas au courant de l'existence des opérateurs '! ==' et '===' en JavaScript? –

+1

Merci d'avoir signalé cela. J'ai immédiatement pensé que c'était une faute de frappe, mais rappelez-vous maintenant ce que je n'ai pas vu depuis un moment et avait oublié. –

27

Voici comment vous pouvez tester si une variable est NULL:

if (myVar !== null) {...}

le bloc sera exécuté si myVar est pas nul ..il sera exécuté si myVar est indéfini ou faux ou 0 ou NaN ou toute autre chose ..

4

Il y a un autre scénario possible que je viens de rencontrer. J'ai effectué un appel ajax et j'ai récupéré les données sous la forme null, dans un format de chaîne. Je devais vérifier comme ceci:

if(value != 'null'){} 

Ainsi, null est une chaîne qui se lit « nulle » plutôt que vraiment être nul.

EDIT: Il faut comprendre que je ne suis pas vendre ce que la façon dont il devrait être fait. J'ai eu 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 incorrectement les données, mais peu importe, c'est la vraie vie. Il est frustrant de voir cela - voté par quelqu'un qui comprend que ce n'est pas tout à fait juste, et ensuite voté par quelqu'un qu'il aide réellement.

+0

Plutôt analyser votre valeur que de comparer les chaînes 'null'. – Bergi

+1

Cette réponse est légitime, que vous en compreniez ou non l'application. Je n'apprécie pas d'être downvoted pour poster des choses qui ont fonctionné réellement. Avez-vous remarqué qu'il y avait eu un upvote avant de le toucher? C'est parce que c'est un vrai scénario. – Ben

+1

oui, et je downvoted parce que je pense que c'est la mauvaise solution. Dans le cas d'un appel ajax, il vaut mieux faire 'value = JSON.parse (value)' et ensuite utiliser le test 'value! = Null' simple et correct – Bergi

1

si myVar est nul alors si le bloc ne s'exécute pas autrement, il s'exécutera.

if (myVar != 'null') {...}