Sådan kontrolleres der for udefineret i JavaScript

Når en variabel erklæres uden at være tildelt en værdi, er dens indledende værdi undefined.

Hvordan kontrollerer du, om en værdi er undefined i JavaScript?

Det korte svar

I moderne browsere kan du sikkert sammenligne variablen direkte til undefined:

Nogle mennesker argumenterer for at sammenligne med undefined fordi gamle browsere tillod, at dens værdi blev tildelt igen som denne:

Efter den omfordeling sammenlignet med undefined kunne direkte ikke længere registrere, om en variabel blev tildelt en værdi.

Denne adfærd blev dog rettet i 2009 med ECMAScript 5:

I moderne browsere er det ” er det ikke længere muligt at tildele den globale undefined værdi igen.

Hvad hvis jeg har brug for at understøtte IE8 og ældre?

Generelt, sammenligner direkte med un defineret er stadig sikkert. Der er ingen praktisk grund til en ansøgning om at omfordele værdien af undefined.

Thomas Eding demonstrerer dette med en overbevisende analogi:

Hvis du stadig er bekymret, er der to måder at kontrollere, om en værdi er udefineret, selvom den globale undefined er blevet overskrevet.

Du kan bruge ugyldig operatør for at opnå værdien af undefined. Dette fungerer, selvom den globale window.undefined værdi er overskrevet:

Nul i dette eksempel har ikke nogen særlig betydning, du kan lige så godt bruge 1 eller function(){}. void(anything) evalueres altid til undefined.

Alternativt kan du bruge typeof-operatøren til sikkert at kontrollere, om en værdi blev tildelt. I stedet for at sammenligne med den globale undefined værdi kontrollerer du om værdien “s type er” udefineret “:

Bemærk, at dette er lidt anderledes end de tidligere valgmuligheder. Selvom name ikke blev erklæret typeof stadig ville sige, at det var udefineret. Hvis du sammenlignede en sortvariabel med undefined eller void(0), ville du i stedet få en ReferenceError.

Men don t brug ugyldigt (0) direkte

Undgå at bruge void(0) eller typeof x === "undefined" ordret i kode. Disse udtryk er ikke selvforklarende og skal indpakkes i en ikke-defineret funktion som denne:

Mange hjælpebiblioteker har allerede denne funktion indbygget, for eksempel er der en _.isUndefined -funktion i Underscore.js.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *