In Ihrem Code scheinen Sie zu versuchen, zwei Funktionen zu deklarieren, eine mit dem Namen myfun
, die zwei Argumente benötigt, und eine unbenannte (anonyme) Funktion, die ein Argument benötigt. Es scheint zwei Syntaxfehler in Ihrem Code zu geben: (1) Die Funktion myfun
hat keinen Funktionskörper und (2) dass Sie eine Funktion in der Argumentliste von myfun
deklarieren.
Lassen Sie uns diesen Ansatz, indem beide Funktionen zunächst erklärt (die zweite einen Namen geben und myfun
eine Funktion Körper zu geben):
function myfun(x, functionToBeCalled) {
functionToBeCalled(x);
}
function functionToBePassed(x) {
console.log("Value of x is: "+ x);
}
Jetzt können wir die Funktion myfun
nennen und es zwei Argumente übergeben, ein
myfun(2, functionToBePassed);
Wenn Sie die zweite Funktion sein sollen: Wert für x
und eine Funktion innerhalb myfun
— der Funktion functionToBePassed
aufgerufen werden anonym übergeben, erklären diese Funktion, wenn Sie Aufruf die Funktion myfun
, nicht, wenn Siemyfun
erklären :
//declare myfun
function myfun(x, functionToBeCalled) {
functionToBeCalled(x);
}
//call myfun and pass a function as an argument
myfun(2, function(x) {
console.log("Value of x is: "+ x);
});
Funktionsparameter sollten die gleiche Syntax wie Variablennamen folgen. Wo ist der Körper der Funktion? –
Sie haben es rückwärts. Die anonyme Funktion muss als 2. Argument in Ihren myfun() -Aufruf gehen.Die Definition muss lauten: 'function myfun (x, f) {f (x); } ' –