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
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:
Das heißt, wenn Sie versuchen, auf d[ascii]
zuzugreifen, versuchen Sie tatsächlich, auf undefined[0]
zuzugreifen, daher der Fehler.
Es gibt keinen Fehler, wenn ich Ihren Code verwende,
aber ich rufe die Methode hasLetter
so auf:
Ich glaube nicht, dass Sie das []
in Ihrem Funktionsaufruf benötigen. Was ist die Ausgabe von hasLetter("a",words);
?
Tags und Links javascript arrays error-handling typeerror uncaught-typeerror