Sabine: Funktionen in Javascript

Könnt ihr mir sagen, was in diesem Codeausschnitt passiert? Ich versuchs mal so weit ich kann selbst zu erklären. Wir Ergänzungen bzw. Berichtigungen bin ich Dankbar.

1.)
Die Funktion "xrxCallAjax" bekommt als Parameter die Funktion "callback_failure" übergeben.

2.)
Die Funktion "callback_failure" wird ausgeführt.

3.)
Der Variablen "xrxAjaxFailureCallback" wird das zugewiesen, was die Funktion "callback_failure" zurückgibt.

4.)
Wenn "xrxAjaxFailureCallback" ungleich null ist wird die Funktion "xrxAjaxFailureCallback" aufgerufen. Die gibt es nur leider nicht?

Irgendwie verstehe ich nicht was dort passiert.

//* @param callback_failure: function to callback upon failed completion

function xrxCallAjax(callback_failure)
{
    xrxAjaxFailureCallback = callback_failure;

if(xrxAjaxFailureCallback != null)
        xrxAjaxFailureCallback();
}

  1. Hi,

    1.)
    Die Funktion "xrxCallAjax" bekommt als Parameter die Funktion "callback_failure" übergeben.

    richtig.

    2.)
    Die Funktion "callback_failure" wird ausgeführt.

    Falsch. Nirgendwo ist eine Spur davon zu sehen, dass diese Funktion ausgeführt wird - der Umstand, dass es sich um eine Funktion (bzw. eine Referenz darauf) handelt, ist diesbezüglich unbedeutend. Zur Ausführung braucht es Klammern.

    3.)
    Der Variablen "xrxAjaxFailureCallback" wird das zugewiesen, was die Funktion "callback_failure" zurückgibt.

    Nein. Der Variablen "xrxAjaxFailureCallback" wird die Funktion (eine Referenz darauf) zugewiesen.

    4.)
    Wenn "xrxAjaxFailureCallback" ungleich null ist wird die Funktion "xrxAjaxFailureCallback" aufgerufen. Die gibt es nur leider nicht?

    Doch, sie wurde eine Zeile vorher bereit gestellt.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Liebe Sabine,

    4.)
    Wenn "xrxAjaxFailureCallback" ungleich null ist wird die Funktion "xrxAjaxFailureCallback" aufgerufen. Die gibt es nur leider nicht?

    das kommt darauf an, ob als Parameter tatsächlich eine Funktion übermittelt wurde. Daher finde ich

    if(xrxAjaxFailureCallback != null)

    nicht so gut. Ich würde eher darauf prüfen, ob es sich tatsächlich um eine Funktion handelt:

    if(typeof(xrxAjaxFailureCallback) == "function")  
        var rueckgabewert = xrxAjaxFailureCallback();
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)