2016-07-27 14 views
-3

Wie ich in fast Fall sehen kann, würde Javascript Nachricht werfen undefined oder x is not defined, etc ...Umgang mit Fehlermeldung von 'undefined' in Javascript

Hier einige:

var i; 
var j = i; 
alert(j); // undefined 

var xyz; 
alert(xyz); // undefined 

undefined? Nein, es ist ohne einen Standardwert definiert. So soll die Fehlermeldung sein:

Verwendung von nicht zugewiesenen lokalen Variablen 'i'

Verwendung von nicht zugewiesenen lokalen Variablen 'xyz'

Die Fehlermeldung von

alert(xyz); // Uncaught ReferenceError: xyz is not defined 

// or 

alert(xyz === undefined); // Uncaught ReferenceError: xyz is not defined 

sollte

werden

Der 'xyz' Name existiert nicht im aktuellen Kontext

Und die letzten:

alert(typeof(xyz) === 'undefined'); // true 

Also, das Problem ist: Sie wollen die Art von nothing bekommen ??? Wenn etwas-ein thing (nicht nothing) ist, sollte der Typ ein Attribut davon sein. Sie können es nach der Deklaration und nur zuweisen.

Meine Frage: Wie ist meine Idee, diese Fehlermeldungen zu behandeln?

p/s: Ich komme aus C# :)

+0

Ich bin nicht wirklich sicher, was Sie hier fragen, aber es scheint, dass Sie [eine Diskussion] (http://stackoverflow.com/help/dont-ask) über die Neugestaltung eines grundlegenden Teils des JavaScript haben wollen Sprache. Dies ist nicht der richtige Ort dafür. – Quentin

Antwort

2

Es gibt zwei Konzepte hier im Spiel:

  • Eine Kennung, die nicht (vollständig nicht angemeldet definiert ist, nicht in dem aktuellen Bereich existiert überhaupt)
  • Ein Bezeichner, definiert (deklariert ist, in ihrem Umfang ist), der den Wert undefined
enthält

Die kurze Antwort lautet: Wenn Sie zur Zeit, wenn eine Kennung sehen wollen, ist in ihrem Umfang, die in ihrem Umfang nicht sein können oder nicht, dies tun:

if (typeof xyz === "undefined") { 
    // Either the identifier isn't in scope, or it's in scope and has 
    // the value undefined 
} 

typeof xyz wird nie einen Fehler aus, auch wenn xyz völlig undeclared ist . Dies ist (wie Sie gefunden haben) anders als xyz === undefined, was eine ReferenceError auslösen wird, wenn xyz eine vollständig nicht deklarierte Kennung ist.

Nein, es ist ohne einen Standardwert definiert. So sollte die Fehlermeldung sein:

Use of unassigned local variable 'i'
Use of unassigned local variable 'xyz'

JavaScript hat kein Konzept einer nicht zugeordneten Variablen.Wenn eine Variable erstellt wird, wird ihr automatisch der Wert undefined zugewiesen.

+1

Mein Fehler ist 'ohne einen Standardwert ', und das richtige: der Standardwert ist' undefiniert '. Danke vielmals! –

Verwandte Themen