Heim > Artikel > Web-Frontend > Warum gibt „forEach“ „undefiniert“ zurück, selbst wenn eine „return“-Anweisung innerhalb der Iterationsfunktion vorhanden ist?
Fehlerbehebung bei undefinierten Rückgaben in Funktionen mit forEach
Bestimmte Funktionen können bei Verwendung mit der forEach-Methode trotz der Einbeziehung einer Rückgabe undefiniert zurückgeben Stellungnahme. Dieses Verhalten tritt auf, weil sich die return-Anweisung auf die an forEach übergebene Iterationsfunktion und nicht auf die einschließende Funktion selbst auswirkt.
Beispielcode:
Betrachten Sie die folgende Funktion:
def get_by_key(key): data.forEach(function(i, val): if data[val].Key == key: return data[val].Key else: return "Couldn't find" )
Wenn Sie diese Funktion aufrufen, erwarten Sie möglicherweise, dass sie den Wert des Schlüssels im Datenarray zurückgibt, dies wird jedoch immer zurückgegeben undefiniert. Dies liegt daran, dass sich die Return-Anweisung innerhalb der Iterationsfunktion befindet, was keinen Einfluss auf den Rückgabewert von get_by_key hat.
Lösung:
Es gibt zwei Hauptmöglichkeiten zur Adressierung dieses Problem:
1. Verwenden eines Abschlusses:
def get_by_key(key): found = None data.forEach(function(val): if val.Key == key: found = val ) return found
In dieser Lösung erstellen wir einen Abschluss, indem wir die gefundene Variable außerhalb der Iterationsfunktion deklarieren. Dadurch können wir den Wert zurückgeben, ohne die Iterationsfunktion zu beeinträchtigen.
2. Verwendung einer for-Schleife:
def get_by_key(key): for i in range(len(data)): if data[i].Key == key: return data[i]
Bei kleineren Datensätzen kann eine einfache for-Schleife effizienter sein als die Verwendung von forEach. Es durchläuft das Datenarray und gibt den gefundenen Wert zurück.
Zusätzliche Überlegungen:
Das obige ist der detaillierte Inhalt vonWarum gibt „forEach“ „undefiniert“ zurück, selbst wenn eine „return“-Anweisung innerhalb der Iterationsfunktion vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!