2016-04-26 7 views
-1

In Javascript sind Funktionen "First-Class-Bürger". Ich bin jedoch etwas verwirrt darüber, wie sie ausgewertet werden, wenn sie als Argumente an eine Funktion übergeben werden.Wie werden Funktionen ausgewertet, wenn sie als Argumente übergeben werden

const childFunction =() => (
... 
); 

const parentFunction = (childFunction) =>(
... 
); 

Ich frage mich, was ist die Reihenfolge des Ablaufs des Codes. So wäre es in etwa so:

'parentFunction' wird ausgeführt. Argument 'childFunction' wird als Argument identifiziert, 'childFunction' wird ausgeführt. Sobald das Ergebnis von 'childFunction' empfangen wurde, wird der Rumpf von 'parentFunction' ausgeführt.

Danke,

+1

'childFunction' wird nur dann ausgeführt werden, wenn und wenn die' parentFunction' sie ausgeführt wird. Es wird nicht implizit ausgeführt. –

+1

@squint danke, das macht vollkommen Sinn. – Kayote

Antwort

2

childFunction wird nicht nur durch ausgeführt als Argument übergeben wird. Die Funktion, die childFunction nimmt hat es childFunction() oder childFunction.apply/call mit anrufen

const childFunction =() => (
... 
); 

const parentFunction = (childFunction) =>(
    // childFunction doesn't get called/executed until this line is reached 
    childFunction(); 
    // Or something like 
    childFunction.call(this, 1,2,3); 
... 
);