Javascript Uncaught TypeError: Kann die Eigenschaft '0' von undefined nicht lesen

8

Ich weiß, dass es viele Fragen in Bezug auf diesen Fehler gibt, und ich habe die meisten davon überprüft und keiner hilft mir, mein Problem zu lösen. (Das scheint so einfach zu debuggen ...)

Ich habe ein Array (das zuerst leer ist):

%Vor%

Und meine Funktion hasLetter prüft, ob wir einen Buchstaben (Objekt) im Array finden (den ich hier anrufe: d) Worte.

%Vor%

und ich habe eine Funktion namens addLetter, die prüft, ob hasLetter wahr / falsch zurückgibt und dann einen neuen Knoten erzeugt oder nicht.

%Vor%

}

und wenn ich teste:

%Vor%

gibt zurück:

%Vor%

Ich weiß nicht, was ich tun soll, um zu sagen: "Wenn es nicht definiert ist, dann schaue nicht hinein oder etwas in diese Richtung ...

Danke

    
Greg Uptron 03.04.2015, 11:20
quelle

3 Antworten

9

Der Fehler ist hier:

%Vor%

Sie übergeben das erste Element von words anstelle des Arrays.

Übergeben Sie stattdessen das Array an die Funktion:

%Vor%

Problem gelöst!

Hier ist eine Zusammenfassung des Problems:

Ich vermute in Ihrem Browser (chrome wirft einen anderen Fehler auf), words[] == words[0] . Wenn Sie also hasLetter("a",words[]); aufrufen, rufen Sie tatsächlich hasLetter("a",words[0]); auf. Im Wesentlichen übergeben Sie also das erste Wort an Ihre Funktion, nicht das Array als Ganzes.

Natürlich ist words nur ein leeres Array, words[0] ist undefined . Daher lautet Ihr Funktionsaufruf eigentlich:

%Vor%

Das heißt, wenn Sie versuchen, auf d[ascii] zuzugreifen, versuchen Sie tatsächlich, auf undefined[0] zuzugreifen, daher der Fehler.

    
theonlygusti 03.04.2015, 11:32
quelle
2

Es gibt keinen Fehler, wenn ich Ihren Code verwende,

aber ich rufe die Methode hasLetter so auf:

%Vor%     
Akash Chavda 03.04.2015 11:29
quelle
0

Ich glaube nicht, dass Sie das [] in Ihrem Funktionsaufruf benötigen. Was ist die Ausgabe von hasLetter("a",words); ?

    
Vaibhav Sagar 03.04.2015 11:36
quelle