Articles

JavaScript Error Handling-ReferenceError: «x» er ikke definert

Neste opp på listen over artikler i Vår JavaScript Error Handling series vi tar en nærmere titt på Udefinert Variabel feil. Den Udefinerte Variabelfeilen kastes når en referanse til en variabel eller et objekt er laget i kode som enten ikke finnes, eller er utenfor omfanget av den kjørende koden.

Nedenfor vil Vi ta en titt på et par konkrete eksempler som vanligvis vil produsere En Udefinert Variabel feil, samt hvordan å fange og håndtere denne feilen når den vises. La oss komme i gang!

Teknisk Oversikt

  • Alle JavaScript-feilobjekter er etterkommere Av Feilobjektet, eller et arvet objekt deri.
  • ReferenceError-objektet arves fra Feilobjektet.
  • Den Udefinerte Variabelfeilen er en spesifikk Type ReferenceError-objekt.

Når Skal Du Bruke Den?

når du er dypt i ferd med å kode Med JavaScript, er det ikke så uhørt å lage en skrivefeil eller bare glemme å initialisere en variabel eller et objekt før du ringer variabelen senere nedover linjen. Når Dette skjer, Vil JavaScript vise sin misnøye ved å kaste En Udefinert Variabel feil, noe som indikerer at det refererte objektet ikke tidligere var definert.

For eksempel, her gjør vi en enkel setning for å forsøke å ta tak i .lengde eiendom av vår udefinerte elementvariable. Vi bruker også en enkel try-catch-blokk og tar tak i Eventuelle Referansefeil som kan oppstå, og sender dem videre til en enkel skriverfeil-funksjon for å forskjønne utdataene fra feilmeldingene våre:

var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Calling an undefined `item `variable var length = item.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

Sikker nok, Som forventet, Merker JavaScript at elementvariabelen er udefinert, og produserer den eksplisitte Udefinerte Variabelfeilen:

// FIREFOX ReferenceError: item is not defined// CHROME ReferenceError: item is not defined

det er verdt å merke seg at i motsetning til mange Andre JavaScript-feil vi har dekket i denne serien, Varierer Ikke Den Udefinerte Variable feilmeldingsteksten mellom De to motorene som driver Firefox eller Chrome.

den åpenbare og enkle løsningen på denne Bestemte Udefinerte Variabelfeilen er å bare erklære vår varevariabel før du kaller den:

var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Defining `item` first var item = "Bob"; var length = item.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

nå kommer vi forbi elementet.lengde samtale uten å kaste noen feil og dermed produsere vår konsoll.logg utgang av lengden på varen vår streng:

Length is 3.

Teknisk sett, Mens Den Udefinerte Variabelfeilen er ment å identifisere referanser til udefinerte variabler, spiller Den Også en rolle når man forsøker å referere til variabler som er definert, men er utenfor den nåværende omfanget konteksten der koden blir utført.

For eksempel, her har vi en enkel getFullName-funksjon, som definerer to variabler i seg selv, fornavn og etternavn. Utenfor denne funksjonens omfang forsøker vi å få lengdeegenskapen til firstName-variabelen:

var getFullName = function() { var firstName = "Bob"; var lastName = "Smith"; return `${firstName} ${lastName}`;}var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Accessing `firstName` from outside its scope var length = firstName.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

mens fornavn-variabelen allerede er teknisk definert, er den utilgjengelig for oss på dette nivået av utførelse, og dermed kastes En Udefinert Variabelfeil:

 ReferenceError: firstName is not defined

i dette tilfellet er oppløsning et spørsmål om å trekke fornavn-og etternavn-variabelen utenfor omfanget av getfullnamefunksjonen, så de er innenfor samme kontekst

// 4// Declaring the variables outside our functionvar firstName = "Bob";var lastName = "Smith";var getFullName = function() { return `${firstName} ${lastName}`;}var printError = function(error, explicit) { console.log(` ${error.name}: ${error.message}`);}try { // Accessing `firstName` is now allowed var length = firstName.length; console.log(`Length is ${length}.`)} catch (e) { if (e instanceof ReferenceError) { printError(e, true); } else { printError(e, false); }}

som forventet produseres ingen feil, og vi får lengden På firstname-Variabelen Som Utgang:

Length is 3.

for å dykke enda dypere inn i å forstå hvordan programmene dine håndterer JavaScript-Feil, sjekk ut det revolusjonerende Airbrake JavaScript error tracking tool for sanntidsvarsler og øyeblikkelig innsikt i hva som gikk galt med JavaScript-koden din.

Legg igjen en kommentar

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