Comment vérifier si une variable nest pas définie en JavaScript

Lorsquune variable est déclarée sans avoir de valeur attribuée, sa valeur initiale est undefined.

Comment vérifier si une valeur est undefined en JavaScript?

La réponse courte

Dans les navigateurs modernes, vous pouvez comparer la variable en toute sécurité directement à undefined:

Certaines personnes sopposent à la comparaison avec undefined parce que les anciens navigateurs permettaient à sa valeur dêtre réaffectée comme ceci:

Après cette réaffectation, comparez avec undefined directement ne détecte plus correctement si une variable a été attribuée une valeur.

Cependant, ce comportement a été corrigé en 2009 avec ECMAScript 5:

Dans les navigateurs modernes, il  » Il nest plus possible de réattribuer la valeur globale undefined.

Que faire si je dois prendre en charge IE8 et plus ancien?

En général, comparer directement à un défini est toujours sûr. Il ny a aucune raison pratique pour une application de réaffecter la valeur de undefined.

Thomas Eding le démontre avec une analogie convaincante:

Si vous êtes toujours concerné, il y a deux façons de vérifier si une valeur nest pas définie même si le global undefined a été écrasé.

Vous pouvez utiliser le void pour obtenir la valeur de undefined. Cela fonctionnera même si la valeur globale window.undefined a été écrasée:

Le zéro dans cet exemple na pas de signification particulière, vous pouvez tout aussi bien utiliser 1 ou function(){}. void(anything) sera toujours évalué à undefined.

Vous pouvez également utiliser lopérateur typeof pour vérifier en toute sécurité si une valeur était assigné. Au lieu de comparer à la valeur globale undefined vous vérifiez si la valeur « s type est » undefined « :

Notez que ceci est légèrement différent des options précédentes. Même si name na pas été déclaré, typeof dirait toujours quil « est indéfini. Si vous comparez une variable non déclarée à undefined ou void(0), vous obtiendrez à la place une ReferenceError.

Mais ne « t utilisez directement void (0)

Évitez dutiliser void(0) ou typeof x === "undefined" verbatim dans le code. Ces expressions ne sont pas explicites et doivent être enveloppées dans une fonction isUndefined comme celle-ci:

De nombreuses bibliothèques dutilitaires intègrent déjà cette fonctionnalité, par exemple il ya un _.isUndefined fonction dans Underscore.js.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *