Articles

JavaScript Error Handling – ReferenceError: „x“ není definován

Další na seznamu článků v našem JavaScript Chyba Zpracování seriálu jsme se blíže podívat na Nedefinované Proměnné chyby. Na Nedefinovaná Proměnná, chyba je vyvolána, pokud se odkaz na proměnnou nebo objekt je v kódu, který buď neexistuje, nebo je mimo rozsah provádění kódu.

Níže se podíváme na několik konkrétních příkladů, které se běžně vytvářejí Nedefinované Proměnné chyby, stejně jako, jak se chytit a vypořádat se s touto chybou, když se objeví. Pojďme začít!

technické shrnutí

  • všechny objekty chyby JavaScriptu jsou potomky objektu chyby nebo zděděného objektu v něm.
  • objekt ReferenceError je zděděn z objektu Error.
  • Nedefinovaná chyba proměnné je specifický typ objektu ReferenceError.

kdy byste jej měli použít?

Když hluboko v procesu kódování s Javascriptem, není to neslýchané, aby se překlep, nebo prostě zapomenout inicializovat proměnnou nebo objekt před voláním řekl variabilní později po trati. Když k tomu dojde, JavaScript ukáže svou nelibost tím, že hodí nedefinovanou chybu proměnné, což znamená, že odkazovaný objekt nebyl dříve definován.

například zde děláme jednoduché prohlášení o pokusu chytit .délka vlastnosti naší nedefinované položkyrůzné. Jsme také pomocí jednoduchého try-catch bloku a popadl nějaké ReferenceErrors, které by mohly nastat, pak se kolem nich spolu, aby jednoduchý printError funkce pro zkrášlení výstup našeho chybových zpráv:

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); }}

Určitě dost, jak se očekávalo, JavaScript oznámení, že položka proměnná je nedefinovaná, a vytváří explicitní Nedefinované Proměnné chyby:

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

je To stojí za zmínku, že na rozdíl od mnoha jiných JavaScript chyby probrali jsme v této sérii, Nedefinované Proměnné text chybové zprávy se neliší mezi dva motory pohání Firefox nebo Chrome.

zřejmá a jednoduchá oprava k této konkrétní Nedefinovaná Proměnná, chyba je jednoduše prohlásit naše položky proměnné před říkat:

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); }}

Teď dostaneme přes položku.délka hovoru bez házení chyb a tím produkovat naši konzoli.log výstup délky našeho řetězce položek:

Length is 3.

Technicky vzato, zatímco Nedefinovaná Proměnná, chyba je určen k identifikaci odkazy na nedefinované proměnné, to také hraje roli, když se snaží odkazovat na proměnné, které jsou definovány, ale jsou mimo aktuální rozsah kontextu, kde kód je prováděn.

například zde máme jednoduchou funkci getFullName, která definuje dvě proměnné uvnitř sebe, křestní jméno a příjmení. Mimo rozsah této funkce se pokusíme získat vlastnost délky proměnné firstName:

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); }}

Zatímco jméno proměnné je technicky definována již, že je nepřístupné, aby nás na této úrovni výkonu, a tedy Nedefinované Proměnné chyby je vyvolána:

 ReferenceError: firstName is not defined

V tomto případě, řešení je otázkou tahání jméno a příjmení proměnné mimo rozsah getFullNamefunction, tak oni jsou ve stejném kontextu výkonu, jako naše try-catch bloku:

// 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); }}

Jak se očekávalo, žádné chyby jsou vyrobeny, a my se délka, jméno proměnné jako výstup:

Length is 3.

ponořte se ještě hlouběji do pochopení toho, jak vaše aplikace vypořádat s JavaScript Chyby, podívejte se na revoluční vzduchovou brzdou JavaScript error nástroj pro sledování pro real-time upozornění a okamžitý vhled do toho, co se stalo s vaší JavaScript kód.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *