2012-03-29 27 views
1

Ich versuche, eine Funktion aus dem Anruf einer anderen Funktion zu rufen.Anruf Funktion in einer anderen Funktion Anruf

Wenn ich es so mache, funktioniert es gut. Gibt ‚x‘:

function returnval() { 
    return ("x"); 
} 

alert(
    returnval(); 
) 

Aber wie kann ich das gleiche tun, während die returnval Funktion in dem Funktionsaufruf deklarieren? Ich habe das versucht und alles andere, woran ich denken konnte, ohne Erfolg. Es gibt 'function() {return ("x");})' anstelle des Wertes selbst, 'x':

alert(
    function() { 
     return ("x"); 
    } 
) 

In ähnlicher Weise würde Ich mag einschließen if-Anweisungen in Funktion Anrufe auch. Ist das überhaupt möglich?

Jede Hilfe wäre willkommen. :)

+0

Wirklich alles, was Sie brauchen, ist '()' nach dem Schließen '}' der Funktion. Zusätzliche Klammern um die Funktion sind trotz aller hilfreichen Antworten nicht nötig :-) – Pointy

+0

@Pointy. Sag das zu 'SyntaxError', ich habe versucht, eine Funktion auszuführen, wie du es gesagt hast. – kirilloid

+0

Nein. 'alert (function() {return" Hi ";}());' ist kein Syntaxfehler. Sie benötigen natürlich die Klammern für den Funktionsaufruf 'alert() '; was ich meinte war, dass du keine ** zusätzliche ** Klammerschicht brauchst. – Pointy

Antwort

1

Es gibt eine Sache, wie Instant-Funktionsaufruf genannt. Sie rufen eine Funktion nur nach einer Erklärung:

(function() { 
    // ... function body 
})() 

upd hier ist sie: http://www.jspatterns.com/self-executing-functions/

+0

Innerhalb eines Funktionsaufrufs benötigen Sie nicht einmal die zusätzlichen Klammern, da der syntaktische Kontext die Verwendung des Schlüsselwortes 'function' eindeutig macht. – Pointy

+0

@ Pointy ~ Ich lerne jeden Tag etwas Neues. : D –

0

Sie benötigen die Funktion aufzurufen. so etwas wie

alert(
    (function() { 
     return ("x"); 
    })(); 
) 

Das (function(){})() Konstrukt wird eine selbst Aufruf Funktion aufgerufen.

Wenn Sie nicht wollen, das zu tun, können Sie etwas tun, wie

var f = function() { 
    return ("x"); 
}; 

alert(f()); 
0
(function(){ 
    alert('xxx'); 
}(); //alert('xxx'); 

so es wie folgt verwendet werden:

alert((function() { 
     return ("x"); 
    })() 
); 
0

Funktionen sind erstklassige Objekte in JavaScript, bedeutung Sie können Variablen zugewiesen, weitergegeben und zur späteren Verwendung gespeichert werden.

Die von Ihnen angegebene Syntax übergibt die -Funktion selbst an alert. Was Sie tun möchten, ist die Funktion aufrufen, und übergeben Sie den Rückgabewert zu alert:

alert(
    (function() { 
     return ("x"); 
    })() // Invoke the anonymous function 
); 
1

alert ist nicht „der Aufruf einer anderen Funktion“. Sie übergeben eine Funktion als Parameter an eine Funktion. Im Falle einer Warnung wird dies lediglich die Funktion alarmieren, die in Javascript ein Objekt ist. Sie können das Ergebnis des Aufrufs der Funktion jedoch folgendermaßen übergeben:

alert(
    function() { 
     return ("x"); 
    }(); 
); 
+0

Hurra für das Weglassen der unnötigen (harmlosen) zusätzlichen Klammern :-) – Pointy