Hvordan sjekke for udefinert i JavaScript

Når en variabel blir deklarert uten å få tildelt en verdi, er den opprinnelige verdien undefined.

Hvordan sjekker du om en verdi er undefined i JavaScript?

Det korte svaret

I moderne nettlesere kan du trygt sammenligne variabelen direkte til undefined:

Noen argumenterer for å sammenligne med undefined fordi gamle nettlesere tillot at verdien ble tildelt på nytt slik:

Etter den omfordelingen, sammenlignet med undefined ville direkte ikke lenger oppdage riktig om en variabel ble tildelt en verdi.

Denne oppførselen ble imidlertid løst i 2009 med ECMAScript 5:

I moderne nettlesere er det » er det ikke lenger mulig å tilordne den globale undefined -verdien.

Hva om jeg trenger å støtte IE8 og eldre?

Generelt, sammenligne direkte med un definert er fortsatt trygt. Det er ingen praktisk grunn for en søknad om å tilordne verdien til undefined.

Thomas Eding demonstrerer dette med en overbevisende analogi:

Hvis du fortsatt er bekymret, er det to måter å sjekke om en verdi er udefinert selv om den globale undefined er overskrevet.

Du kan bruke ugyldig operatør for å oppnå verdien til undefined. Dette vil fungere selv om den globale window.undefined verdien er overskrevet:

Nullet i dette eksemplet har ikke noen spesiell betydning, du kan like godt bruke 1 eller function(){}. void(anything) evalueres alltid til undefined.

Alternativt kan du bruke typeof-operatøren for å sjekke trygt om en verdi ble tildelt. I stedet for å sammenligne med den globale undefined verdien, sjekker du om verdien «s type er» udefinert «:

Vær oppmerksom på at dette er litt annerledes enn de forrige alternativene. Selv om name ikke var erklært typeof fremdeles vil si at den er udefinert. Hvis du sammenlignet en ikke-deklarert variabel med undefined eller void(0), vil du i stedet få en ReferenceError.

Men ikke t bruk void (0) direkte

Unngå å bruke void(0) eller typeof x === "undefined" ordrett i kode. Disse uttrykkene er ikke selvforklarende og bør pakkes inn i en ikke-definert funksjon som denne:

Mange verktøybiblioteker har allerede denne funksjonaliteten innebygd, for eksempel er det en _.isUndefined -funksjon i Underscore.js.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *