Der Wert wird zurückgegeben, aber nicht von der Funktion detect
.
Wenn Sie eine benannte Funktion für den Load-Ereignishandler anstelle einer anonymen Funktion verwenden, wird deutlicher, was passiert:
%Vor% Der Wert wird von der Funktion handleLoad
an den Code zurückgegeben, der den Event-Handler aufruft, aber die Funktion detect
wurde bereits davor beendet. Es gibt überhaupt keine return
-Anweisung in der Funktion detect
, Sie können also nicht erwarten, dass das Ergebnis irgendetwas anderes als undefined
ist.
Eine übliche Methode zur Behandlung asynchroner Szenarien ist die Verwendung einer Callback-Funktion:
%Vor% Sie rufen die Funktion detect
mit einem Callback auf, das aufgerufen wird, sobald der Wert verfügbar ist:
Dies liegt daran, dass die Funktion detect nichts zurückgibt, da das load-Ereignis nach dem Ende der Funktion auftritt. Und Sie haben vergessen, das Bild an etwas anzuhängen, damit es nie lädt.
Sie könnten etwas tun wie:
%Vor%fiedle hier Ссылка
Ihre Funktion detect
gibt nichts zurück, weshalb alert
"undefined" anzeigt. Die return
-Anweisung, von der Sie behaupten, dass sie nicht funktioniert, kommt von der anonymen Funktion zurück, die Sie image.onload
zuweisen, und funktioniert wahrscheinlich gut, wenn Sie diese Funktion aufrufen würden.
Tags und Links javascript image javascript-events