Je me vautre dans ES2015 + luxe avec quelques projets en ce moment et je me demande si je peux me débarrasser de la béquille tant détestée pour vérifier undefined
au nouveau pays des merveilles.
Existe-t-il déjà un chemin plus court mais toujours exact vers typeof varName === 'undefined'
Dans ES2015 +?
Bien sûr, je pourrais utiliser paramètres par défaut mais cela ressemble aussi à une tâche inutile.
function coolFn(a = null){
if (a===null) console.log("no a supplied");
}
Il suffit de vérifier pour varName === undefined
.
Dans les anciens navigateurs, il était possible d'attribuer une valeur alternative à la variable globale undefined
, ce qui entraînait l'échec du test, mais cela est désormais impossible dans ES2015 +.
Notez qu’il n’ya aucun moyen de distinguer explicitement le passage de undefined
en tant que paramètre de laisser le paramètre en dehors de l’enregistrement autrement que par regarder arguments.length
.
Le seul cas où typeof varName === 'undefined'
est utile lorsque vous ne savez pas si la variable varName
a été déclarée.
Et IMO si vous ne savez pas si vos variables sont déclarées, votre code a de sérieux problèmes.
Dans d'autres cas, vous avez de meilleures options:
varName === void 0
Cela détectera si varName
n'est pas défini.
void
est un opérateur qui reçoit un argument (vous pouvez utiliser n'importe quoi à la place de 0
), et retourne non défini.
varName === undefined
Ceci devrait détecter si varName
est indéfini.
Cependant, sachez que le global undefined
aurait pu être écrasé (avant ES5) ou suivi d'une autre valeur. Par conséquent, je préfère void
, qui est également plus court.
varName == null
Ceci détectera si varName
est indéfini ou nul.
!varName
Ceci détectera si varName
est faux (indéfini, null, 0, chaîne vide, NaN, false).